public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration) { foreach (var v in fieldDeclaration.Variables) { var resolveResult = _resolver.Resolve(v); if (!(resolveResult is MemberResolveResult)) { _errorReporter.Region = fieldDeclaration.GetRegion(); _errorReporter.InternalError("Field declaration " + v.Name + " does not resolve to a member."); return; } var field = ((MemberResolveResult)resolveResult).Member as IField; if (field == null) { _errorReporter.Region = fieldDeclaration.GetRegion(); _errorReporter.InternalError("Field declaration " + v.Name + " does not resolve to a field (resolves to " + resolveResult.ToString() + ")"); return; } var jsClass = GetJsClass(field.DeclaringTypeDefinition); if (jsClass == null) { return; } var impl = _metadataImporter.GetFieldSemantics(field); if (impl.GenerateCode) { if (v.Initializer.IsNull) { AddDefaultFieldInitializerToType(jsClass, impl.Name, field, field.IsStatic); } else { CompileAndAddFieldInitializerToType(jsClass, impl.Name, field, v.Initializer, field.IsStatic); } } } }
public override void VisitFieldDeclaration(FieldDeclaration fieldDeclaration) { foreach (var v in fieldDeclaration.Variables) { var resolveResult = _resolver.Resolve(v); if (!(resolveResult is MemberResolveResult)) { _errorReporter.Region = fieldDeclaration.GetRegion(); _errorReporter.InternalError("Field declaration " + v.Name + " does not resolve to a member."); return; } var field = ((MemberResolveResult)resolveResult).Member as IField; if (field == null) { _errorReporter.Region = fieldDeclaration.GetRegion(); _errorReporter.InternalError("Field declaration " + v.Name + " does not resolve to a field (resolves to " + resolveResult.ToString() + ")"); return; } var jsClass = GetJsClass(field.DeclaringTypeDefinition); if (jsClass == null) return; var impl = _metadataImporter.GetFieldSemantics(field); if (impl.GenerateCode) { if (v.Initializer.IsNull) { AddDefaultFieldInitializerToType(jsClass, impl.Name, field, field.ReturnType, field.DeclaringTypeDefinition, field.IsStatic); } else { CompileAndAddFieldInitializerToType(jsClass, impl.Name, field.DeclaringTypeDefinition, v.Initializer, field.IsStatic); } } } }