Example #1
0
		internal void Emit(CodeGenerator/*!*/ codeGenerator)
		{
			Statistics.AST.AddNode("Class.ConstantDecl");

			codeGenerator.InitializeClassConstant(constant);
			if (constant.IsExported)
			{
				string name = constant.FullName;

				// avoid duplicate export property names
				while (true)
				{
					DPropertyDesc prop_desc = constant.DeclaringPhpType.TypeDesc.GetProperty(new VariableName(name));
					if (prop_desc != null && prop_desc.PhpField.IsExported)
					{
						name = name + "_const";
					}
					else break;
				}

				PropertyBuilder exported_property = ClrStubBuilder.DefineFieldExport(name, constant);
				codeGenerator.EmitConstantExportStub(constant, exported_property);
			}
		}