/// <summary> /// Creates a speculative SemanticModel for an initializer node (field initializer, constructor initializer, or parameter default value) /// that did not appear in the original source code. /// </summary> internal static InitializerSemanticModel CreateSpeculative(SyntaxTreeSemanticModel parentSemanticModel, Symbol owner, CSharpSyntaxNode syntax, Binder rootBinder, int position) { Debug.Assert(parentSemanticModel != null); Debug.Assert(syntax != null); Debug.Assert(syntax.IsKind(SyntaxKind.EqualsValueClause)); Debug.Assert(rootBinder != null); Debug.Assert(rootBinder.IsSemanticModelBinder); return(new InitializerSemanticModel(syntax, owner, rootBinder, parentSemanticModelOpt: parentSemanticModel, speculatedPosition: position)); }
/// <summary> /// Creates a SemanticModel for an autoprop initializer of a named type /// </summary> internal static InitializerSemanticModel Create(SyntaxTreeSemanticModel containingSemanticModel, CSharpSyntaxNode syntax, PropertySymbol propertySymbol, Binder rootBinder) { Debug.Assert(containingSemanticModel != null); Debug.Assert(syntax.IsKind(SyntaxKind.PropertyDeclaration)); return(new InitializerSemanticModel(syntax, propertySymbol, rootBinder, containingSemanticModel)); }
/// <summary> /// Creates a SemanticModel for a true field initializer (field = value) of a named type (incl. Enums). /// </summary> internal static InitializerSemanticModel Create(SyntaxTreeSemanticModel containingSemanticModel, CSharpSyntaxNode syntax, FieldSymbol fieldSymbol, Binder rootBinder) { Debug.Assert(containingSemanticModel != null); Debug.Assert(syntax.IsKind(SyntaxKind.VariableDeclaration) || syntax.IsKind(SyntaxKind.EnumMemberDeclaration)); return(new InitializerSemanticModel(syntax, fieldSymbol, rootBinder, containingSemanticModel)); }