Binder\Binder.ValueChecks.cs (30)
527internal bool CheckValueKind(SyntaxNode node, BoundExpression expr, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
768bool checkArrayAccessValueKind(SyntaxNode node, BindValueKind valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics)
790private static void ReportThisLvalueError(SyntaxNode node, BindValueKind valueKind, bool isValueType, bool isPrimaryConstructorParameter, BindingDiagnosticBag diagnostics)
818private bool CheckLocalValueKind(SyntaxNode node, BoundLocal local, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
866private bool CheckLocalRefEscape(SyntaxNode node, BoundLocal local, uint escapeTo, bool checkingReceiver, BindingDiagnosticBag diagnostics)
911private bool CheckParameterValueKind(SyntaxNode node, BoundParameter parameter, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
976static void reportReadOnlyParameterError(ParameterSymbol parameterSymbol, SyntaxNode node, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1060private bool CheckParameterValEscape(SyntaxNode node, ParameterSymbol parameter, uint escapeTo, BindingDiagnosticBag diagnostics)
1079private bool CheckParameterRefEscape(SyntaxNode node, BoundExpression parameter, ParameterSymbol parameterSymbol, uint escapeTo, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1122private bool CheckFieldValueKind(SyntaxNode node, BoundFieldAccess fieldAccess, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1247private bool CheckSimpleAssignmentValueKind(SyntaxNode node, BoundAssignmentOperator assignment, BindValueKind valueKind, BindingDiagnosticBag diagnostics)
1285private bool CheckFieldRefEscape(SyntaxNode node, BoundFieldAccess fieldAccess, uint escapeFrom, uint escapeTo, BindingDiagnosticBag diagnostics)
1309private bool CheckFieldLikeEventRefEscape(SyntaxNode node, BoundEventAccess eventAccess, uint escapeFrom, uint escapeTo, BindingDiagnosticBag diagnostics)
1334SyntaxNode eventSyntax = GetEventName(boundEvent); //does not include receiver
1395private bool CheckIsValidReceiverForVariable(SyntaxNode node, BoundExpression receiver, BindValueKind kind, BindingDiagnosticBag diagnostics)
1423SyntaxNode callSyntaxOpt,
1424SyntaxNode node,
1466private bool CheckPropertyValueKind(SyntaxNode node, BoundExpression expr, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1474SyntaxNode propertySyntax;
1689private bool IsBadBaseAccess(SyntaxNode node, BoundExpression receiverOpt, Symbol member, BindingDiagnosticBag diagnostics,
1904SyntaxNode syntax,
1990SyntaxNode syntax,
2365SyntaxNode syntax,
2417SyntaxNode syntax,
2519SyntaxNode syntax,
2659private static void ReportReadonlyLocalError(SyntaxNode node, LocalSymbol local, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
2818private static void ReportReadOnlyFieldError(FieldSymbol field, SyntaxNode node, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
2854private static void ReportReadOnlyError(Symbol symbol, SyntaxNode node, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3148internal bool CheckRefEscape(SyntaxNode node, BoundExpression expr, uint escapeFrom, uint escapeTo, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3869internal bool CheckValEscape(SyntaxNode node, BoundExpression expr, uint escapeFrom, uint escapeTo, bool checkingReceiver, BindingDiagnosticBag diagnostics)
Binder\Binder_Await.cs (12)
28private BoundAwaitExpression BindAwait(BoundExpression expression, SyntaxNode node, BindingDiagnosticBag diagnostics)
45internal void ReportBadAwaitDiagnostics(SyntaxNode node, Location location, BindingDiagnosticBag diagnostics, ref bool hasErrors)
51internal BoundAwaitableInfo BindAwaitInfo(BoundAwaitableValuePlaceholder placeholder, SyntaxNode node, BindingDiagnosticBag diagnostics, ref bool hasErrors, BoundExpression? expressionOpt = null)
120var syntax = expression.Syntax;
203private bool ReportBadAwaitContext(SyntaxNode node, Location location, BindingDiagnosticBag diagnostics)
245SyntaxNode node,
259SyntaxNode node,
295private static bool ValidateAwaitedExpression(BoundExpression expression, SyntaxNode node, BindingDiagnosticBag diagnostics)
323private bool GetGetAwaiterMethod(BoundExpression expression, SyntaxNode node, BindingDiagnosticBag diagnostics, [NotNullWhen(true)] out BoundExpression? getAwaiterCall)
367private bool GetIsCompletedProperty(TypeSymbol awaiterType, SyntaxNode node, TypeSymbol awaitedExpressionType, BindingDiagnosticBag diagnostics, [NotNullWhen(true)] out PropertySymbol? isCompletedProperty)
410private bool AwaiterImplementsINotifyCompletion(TypeSymbol awaiterType, SyntaxNode node, BindingDiagnosticBag diagnostics)
434private bool GetGetResultMethod(BoundExpression awaiterExpression, SyntaxNode node, TypeSymbol awaitedExpressionType, BindingDiagnosticBag diagnostics, out MethodSymbol? getResultMethod, [NotNullWhen(true)] out BoundExpression? getAwaiterGetResultCall)
Binder\Binder_Conversions.cs (18)
40SyntaxNode syntax,
52SyntaxNode syntax,
93SyntaxNode syntax,
342SyntaxNode syntax, BoundUnconvertedObjectCreationExpression node, Conversion conversion, bool isCast, TypeSymbol destination,
375SyntaxNode syntax, InitializerExpressionSyntax? initializerOpt, Binder binder,
478SyntaxNode syntax,
645private BoundExpression CreateFunctionTypeConversion(SyntaxNode syntax, BoundExpression source, Conversion conversion, bool isCast, ConversionGroup? conversionGroup, TypeSymbol destination, BindingDiagnosticBag diagnostics)
693private BoundExpression CreateAnonymousFunctionConversion(SyntaxNode syntax, BoundExpression source, Conversion conversion, bool isCast, ConversionGroup? conversionGroup, TypeSymbol destination, BindingDiagnosticBag diagnostics)
720private BoundExpression CreateMethodGroupConversion(SyntaxNode syntax, BoundExpression source, Conversion conversion, bool isCast, ConversionGroup? conversionGroup, TypeSymbol destination, BindingDiagnosticBag diagnostics)
739private static void CheckValidScopedMethodConversion(SyntaxNode syntax, MethodSymbol lambdaOrMethod, TypeSymbol targetType, bool invokedAsExtensionMethod, BindingDiagnosticBag diagnostics)
865private BoundExpression CreateStackAllocConversion(SyntaxNode syntax, BoundExpression source, Conversion conversion, bool isCast, ConversionGroup? conversionGroup, TypeSymbol destination, BindingDiagnosticBag diagnostics)
893private BoundExpression CreateTupleLiteralConversion(SyntaxNode syntax, BoundTupleLiteral sourceTuple, Conversion conversion, bool isCast, ConversionGroup? conversionGroup, TypeSymbol destination, BindingDiagnosticBag diagnostics)
1046private bool MemberGroupFinalValidation(BoundExpression? receiverOpt, MethodSymbol methodSymbol, SyntaxNode node, BindingDiagnosticBag diagnostics, bool invokedAsExtensionMethod)
1121private bool MemberGroupFinalValidationAccessibilityChecks(BoundExpression? receiverOpt, Symbol memberSymbol, SyntaxNode node, BindingDiagnosticBag diagnostics, bool invokedAsExtensionMethod)
1185SyntaxNode errorNode = node;
1434SyntaxNode syntax,
1531SyntaxNode syntax,
1633SyntaxNode syntax,
Binder\Binder_Deconstruct.cs (8)
244SyntaxNode syntax,
245SyntaxNode rightSyntax,
303var elementSyntax = syntax.Kind() == SyntaxKind.TupleExpression ? ((TupleExpressionSyntax)syntax).Arguments[i] : syntax;
436internal DeconstructionVariable(BoundExpression variable, SyntaxNode syntax)
443internal DeconstructionVariable(ArrayBuilder<DeconstructionVariable> variables, SyntaxNode syntax)
614SyntaxNode rightSyntax,
714private BoundBadExpression MissingDeconstruct(BoundExpression receiver, SyntaxNode rightSyntax, int numParameters, BindingDiagnosticBag diagnostics,
852SyntaxNode syntax,
Binder\Binder_Expressions.cs (88)
105private BoundBadExpression BadExpression(SyntaxNode syntax)
113private BoundBadExpression BadExpression(SyntaxNode syntax, BoundExpression childNode)
121private BoundBadExpression BadExpression(SyntaxNode syntax, ImmutableArray<BoundExpression> childNodes)
129protected BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind lookupResultKind)
137protected BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind lookupResultKind, BoundExpression childNode)
145private BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol> symbols)
158private BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol> symbols, BoundExpression childNode)
171private BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol> symbols, ImmutableArray<BoundExpression> childNodes, bool wasCompilerGenerated = false)
401var syntax = expr.Syntax;
1163private static string InferTupleElementName(SyntaxNode syntax)
2058private BoundExpression SynthesizeReceiver(SyntaxNode node, Symbol member, BindingDiagnosticBag diagnostics)
2123private BoundExpression TryBindInteractiveReceiver(SyntaxNode syntax, NamedTypeSymbol memberDeclaringType)
2274private BoundThisReference ThisReference(SyntaxNode node, NamedTypeSymbol thisTypeOpt, bool hasErrors = false, bool wasCompilerGenerated = false)
2508SyntaxNode syntax,
2712private static NameSyntax GetNameSyntax(SyntaxNode syntax)
2725internal static NameSyntax GetNameSyntax(SyntaxNode syntax, out string nameString)
3026internal static void CheckRestrictedTypeInAsyncMethod(Symbol containingSymbol, TypeSymbol type, BindingDiagnosticBag diagnostics, SyntaxNode syntax, bool forUsingExpression = false)
3041internal GlobalExpressionVariable LookupDeclaredField(SyntaxNode node, string identifier)
3865private bool ReportBadStackAllocPosition(SyntaxNode node, BindingDiagnosticBag diagnostics)
3890private TypeSymbol GetStackAllocType(SyntaxNode node, TypeWithAnnotations elementTypeWithAnnotations, BindingDiagnosticBag diagnostics, out bool hasErrors)
3916static bool isStackallocTargetTyped(SyntaxNode node)
3920SyntaxNode equalsValueClause = node.Parent;
3927SyntaxNode variableDeclarator = equalsValueClause.Parent;
3934SyntaxNode variableDeclaration = variableDeclarator.Parent;
3947SyntaxNode node,
4490private BoundExpression BindDelegateCreationExpression(SyntaxNode node, NamedTypeSymbol type, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax initializerOpt, bool wasTargetTyped, BindingDiagnosticBag diagnostics)
4507var argSyntax = analyzedArguments.Arguments[0].Syntax;
4697SyntaxNode node,
4738private BoundExpression MakeBadExpressionForObjectCreation(SyntaxNode node, TypeSymbol type, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax? initializerOpt, SyntaxNode? typeSyntax, BindingDiagnosticBag diagnostics, bool wasCompilerGenerated = false)
4760SyntaxNode typeSyntax,
4792SyntaxNode typeSyntax,
5191var memberInitializerSyntax = boundMemberInitializer.Syntax;
5213SyntaxNode creationSyntax,
5632SyntaxNode node,
5634SyntaxNode typeNode,
5812private BoundExpression BindInterfaceCreationExpression(SyntaxNode node, NamedTypeSymbol type, BindingDiagnosticBag diagnostics, SyntaxNode typeNode, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax initializerOpt, bool wasTargetTyped)
5838private BoundExpression BindComImportCoClassCreationExpression(SyntaxNode node, NamedTypeSymbol interfaceType, NamedTypeSymbol coClassType, BindingDiagnosticBag diagnostics, SyntaxNode typeNode, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax initializerOpt, bool wasTargetTyped)
5920SyntaxNode node,
5924SyntaxNode typeNode,
5971SyntaxNode node, TypeParameterSymbol typeParameter, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax initializerOpt,
5972SyntaxNode typeSyntax, bool wasTargetTyped, BindingDiagnosticBag diagnostics)
6806private void WarnOnAccessOfOffDefault(SyntaxNode node, BoundExpression boundLeft, BindingDiagnosticBag diagnostics)
6855SyntaxNode node,
6856SyntaxNode right,
6953var nameSyntax = node.NameSyntax;
6954var syntax = node.MemberAccessExpressionSyntax ?? nameSyntax;
6963SyntaxNode node,
6964SyntaxNode name,
7043var nameSyntax = node.NameSyntax;
7044var syntax = node.MemberAccessExpressionSyntax ?? nameSyntax;
7052SyntaxNode node,
7151SyntaxNode node,
7152SyntaxNode right,
7270SyntaxNode expression,
7377SyntaxNode node,
7429SyntaxNode node,
7589SyntaxNode node,
7609private void CheckReceiverAndRuntimeSupportForSymbolAccess(SyntaxNode node, BoundExpression receiverOpt, Symbol symbol, BindingDiagnosticBag diagnostics)
7659SyntaxNode node,
7705SyntaxNode node,
7748private Symbol GetSymbolOrMethodOrPropertyGroup(LookupResult result, SyntaxNode node, string plainName, int arity, ArrayBuilder<Symbol> methodOrPropertyGroup, BindingDiagnosticBag diagnostics, out bool wasError, NamespaceOrTypeSymbol qualifierOpt)
7921private BoundExpression BadIndexerExpression(SyntaxNode node, BoundExpression expr, AnalyzedArguments analyzedArguments, DiagnosticInfo errorOpt, BindingDiagnosticBag diagnostics)
7933SyntaxNode node,
7967private BoundExpression BindArrayAccess(SyntaxNode node, BoundExpression expr, AnalyzedArguments arguments, BindingDiagnosticBag diagnostics)
8065var node = index.Syntax;
8117private BoundExpression TryImplicitConversionToArrayIndex(BoundExpression expr, WellKnownType wellKnownType, SyntaxNode node, BindingDiagnosticBag diagnostics)
8138private BoundExpression TryImplicitConversionToArrayIndex(BoundExpression expr, SpecialType specialType, SyntaxNode node, BindingDiagnosticBag diagnostics)
8155private BoundExpression TryImplicitConversionToArrayIndex(BoundExpression expr, TypeSymbol targetType, SyntaxNode node, BindingDiagnosticBag diagnostics)
8179private BoundExpression BindPointerElementAccess(SyntaxNode node, BoundExpression expr, AnalyzedArguments analyzedArguments, BindingDiagnosticBag diagnostics)
8240private BoundExpression BindIndexerAccess(SyntaxNode node, BoundExpression expr, AnalyzedArguments analyzedArguments, BindingDiagnosticBag diagnostics)
8312var syntax = propertyGroup.Syntax;
8340private BoundExpression BindIndexedPropertyAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<PropertySymbol> propertyGroup, AnalyzedArguments arguments, BindingDiagnosticBag diagnostics)
8354SyntaxNode syntax,
8398SyntaxNode syntax,
8522SyntaxNode syntax,
8607SyntaxNode syntax,
8640SyntaxNode syntax,
8749void makeCall(SyntaxNode syntax, BoundExpression receiver, MethodSymbol method,
8773SyntaxNode syntax,
8798SyntaxNode syntax,
8813bool tryLookupLengthOrCount(SyntaxNode syntax, string propertyName, [NotNullWhen(true)] out PropertySymbol? valid, BindingDiagnosticBag diagnostics)
8890SyntaxNode expression,
8944SyntaxNode expression,
9183SyntaxNode syntax,
9295Location location = null, SyntaxNode node = null)
Binder\Binder_InterpolatedString.cs (4)
369private BoundBinaryOperator UpdateBinaryOperatorWithInterpolatedContents(BoundBinaryOperator originalOperator, ImmutableArray<ImmutableArray<BoundExpression>> appendCalls, InterpolatedStringHandlerData data, SyntaxNode rootSyntax, BindingDiagnosticBag diagnostics)
487SyntaxNode syntax,
671static void populateArguments(SyntaxNode syntax, ImmutableArray<BoundInterpolatedStringArgumentPlaceholder> additionalConstructorArguments, int baseStringLength, int numFormatHoles, NamedTypeSymbol intType, ArrayBuilder<BoundExpression> argumentsBuilder)
1006SyntaxNode placeholderSyntax;
Binder\Binder_Invocation.cs (23)
78SyntaxNode node,
248SyntaxNode node,
249SyntaxNode expression,
305SyntaxNode node,
444SyntaxNode node,
512SyntaxNode node,
513SyntaxNode expression,
566SyntaxNode syntax,
567SyntaxNode expression,
706SyntaxNode syntax,
707SyntaxNode expression,
808SyntaxNode syntax,
935SyntaxNode node,
936SyntaxNode expression,
1149private static SourceLocation GetCallerLocation(SyntaxNode syntax)
1164private BoundExpression GetDefaultParameterSpecialNoConversion(SyntaxNode syntax, ParameterSymbol parameter, BindingDiagnosticBag diagnostics)
1265SyntaxNode node,
1346BoundExpression bindDefaultArgument(SyntaxNode syntax, ParameterSymbol parameter, Symbol? containingMember, bool enableCallerInfo, BindingDiagnosticBag diagnostics, ArrayBuilder<BoundExpression> argumentsBuilder, int argumentsCount, ImmutableArray<int> argsToParamsOpt)
1493private static Location GetLocationForOverloadResolutionDiagnostic(SyntaxNode node, SyntaxNode expression)
1591SyntaxNode node,
1831SyntaxNode node,
2006private BoundFunctionPointerInvocation BindFunctionPointerInvocation(SyntaxNode node, BoundExpression boundExpression, AnalyzedArguments analyzedArguments, BindingDiagnosticBag diagnostics)
Binder\Binder_Operators.cs (4)
2349private bool CheckConstraintLanguageVersionAndRuntimeSupportForOperator(SyntaxNode node, MethodSymbol? methodOpt, bool isUnsignedRightShift, TypeSymbol? constrainedToTypeOpt, BindingDiagnosticBag diagnostics)
4303private void ValidateRefConditionalOperator(SyntaxNode node, BoundExpression trueExpr, BoundExpression falseExpr, BindingDiagnosticBag diagnostics)
4362private void CheckNativeIntegerFeatureAvailability(BinaryOperatorKind operatorKind, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
4378private void CheckNativeIntegerFeatureAvailability(UnaryOperatorKind operatorKind, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
Binder\Binder_Patterns.cs (9)
46SyntaxNode node,
346private bool IsCountableAndIndexable(SyntaxNode node, TypeSymbol inputType, out PropertySymbol? lengthProperty)
354private bool BindLengthAndIndexerForListPattern(SyntaxNode node, TypeSymbol inputType, BindingDiagnosticBag diagnostics,
417SyntaxNode node,
713SyntaxNode typeSyntax,
887CheckRestrictedTypeInAsyncMethod(this.ContainingMemberOrLambda, declType.Type, diagnostics, typeSyntax ?? (SyntaxNode)designation);
1225SyntaxNode node,
1287private static FieldSymbol? CheckIsTupleElement(SyntaxNode node, NamedTypeSymbol tupleType, string name, int tupleIndex, BindingDiagnosticBag diagnostics)
1758TypeSymbol? leastSpecificType(SyntaxNode node, ArrayBuilder<TypeSymbol> candidates, BindingDiagnosticBag diagnostics)
Binder\Binder_Statements.cs (21)
751internal MethodSymbol TryFindDisposePatternMethod(BoundExpression expr, SyntaxNode syntaxNode, bool hasAwait, BindingDiagnosticBag diagnostics)
1242SyntaxNode initializerSyntax = initializerOpt.Syntax;
1372SyntaxNode initializerSyntax = initializer.Syntax;
1483SyntaxNode node,
1538SyntaxNode node,
1631internal static PropertySymbol GetPropertySymbol(BoundExpression expr, out BoundExpression receiver, out SyntaxNode propertySyntax)
1684var syntax = expr.Syntax;
1730private static SyntaxNode GetEventName(BoundEventAccess expr)
1732SyntaxNode syntax = expr.Syntax;
1969internal void GenerateAnonymousFunctionConversionError(BindingDiagnosticBag diagnostics, SyntaxNode syntax,
2195protected static void GenerateImplicitConversionError(BindingDiagnosticBag diagnostics, CSharpCompilation compilation, SyntaxNode syntax,
2265SyntaxNode syntax,
2406var nodeForError = syntax;
3026SyntaxNode syntax,
3271private void ReportCantConvertLambdaReturn(SyntaxNode syntax, BindingDiagnosticBag diagnostics)
3298private static Location GetLocationForDiagnostics(SyntaxNode node)
3315private static bool IsValidStatementExpression(SyntaxNode syntax, BoundExpression expression)
3349var syntax = expressionSyntax ?? expression.Syntax;
3434private static bool IsValidExpressionBody(SyntaxNode expressionSyntax, BoundExpression expression)
3680internal BoundExpressionStatement? BindImplicitConstructorInitializer(SyntaxNode ctorSyntax, BindingDiagnosticBag diagnostics)
4000SyntaxNode syntaxNode, BindingDiagnosticBag diagnostics, out MethodSymbol result)
Binder\Binder_Symbols.cs (23)
192private NamespaceOrTypeOrAliasSymbolWithAnnotations BindTypeOrAliasOrKeyword(SyntaxToken identifier, SyntaxNode syntax, BindingDiagnosticBag diagnostics, out bool isKeyword)
1092private NamespaceOrTypeOrAliasSymbolWithAnnotations UnwrapAlias(in NamespaceOrTypeOrAliasSymbolWithAnnotations symbol, BindingDiagnosticBag diagnostics, SyntaxNode syntax, ConsList<TypeSymbol> basesBeingResolved = null)
1103private NamespaceOrTypeOrAliasSymbolWithAnnotations UnwrapAlias(in NamespaceOrTypeOrAliasSymbolWithAnnotations symbol, out AliasSymbol alias, BindingDiagnosticBag diagnostics, SyntaxNode syntax, ConsList<TypeSymbol> basesBeingResolved = null)
1114private Symbol UnwrapAlias(Symbol symbol, BindingDiagnosticBag diagnostics, SyntaxNode syntax, ConsList<TypeSymbol> basesBeingResolved = null)
1120private Symbol UnwrapAlias(Symbol symbol, out AliasSymbol alias, BindingDiagnosticBag diagnostics, SyntaxNode syntax, ConsList<TypeSymbol> basesBeingResolved = null)
1370private NamedTypeSymbol ConstructNamedTypeUnlessTypeArgumentOmitted(SyntaxNode typeSyntax, NamedTypeSymbol type, SeparatedSyntaxList<TypeSyntax> typeArgumentsSyntax, ImmutableArray<TypeWithAnnotations> typeArguments, BindingDiagnosticBag diagnostics)
1396SyntaxNode syntax,
1553SyntaxNode typeSyntax,
1632internal NamedTypeSymbol GetSpecialType(SpecialType typeId, BindingDiagnosticBag diagnostics, SyntaxNode node)
1637internal static NamedTypeSymbol GetSpecialType(CSharpCompilation compilation, SpecialType typeId, SyntaxNode node, BindingDiagnosticBag diagnostics)
1657internal Symbol GetSpecialTypeMember(SpecialMember member, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
1665internal static bool TryGetSpecialTypeMember<TSymbol>(CSharpCompilation compilation, SpecialMember specialMember, SyntaxNode syntax, BindingDiagnosticBag diagnostics, out TSymbol symbol)
1702internal static bool ReportUseSite(Symbol symbol, BindingDiagnosticBag diagnostics, SyntaxNode node)
1727internal NamedTypeSymbol GetWellKnownType(WellKnownType type, BindingDiagnosticBag diagnostics, SyntaxNode node)
1745internal static NamedTypeSymbol GetWellKnownType(CSharpCompilation compilation, WellKnownType type, BindingDiagnosticBag diagnostics, SyntaxNode node)
1770internal Symbol GetWellKnownTypeMember(WellKnownMember member, BindingDiagnosticBag diagnostics, Location location = null, SyntaxNode syntax = null, bool isOptional = false)
1779internal static Symbol GetWellKnownTypeMember(CSharpCompilation compilation, WellKnownMember member, BindingDiagnosticBag diagnostics, Location location = null, SyntaxNode syntax = null, bool isOptional = false)
1861SyntaxNode where,
1890SyntaxNode where,
2259SyntaxNode node = where;
2500private CSDiagnosticInfo NotFound(SyntaxNode where, string simpleName, int arity, string whereText, BindingDiagnosticBag diagnostics, string aliasOpt, NamespaceOrTypeSymbol qualifierOpt, LookupOptions options)
2689internal static bool CheckFeatureAvailability(SyntaxNode syntax, MessageID feature, BindingDiagnosticBag diagnostics, Location? location = null)
2694internal static bool CheckFeatureAvailability(SyntaxNode syntax, MessageID feature, DiagnosticBag? diagnostics, Location? location = null)
Binder\DecisionDagBuilder.cs (20)
41/// <see cref="MakeBoundDecisionDag(SyntaxNode, ImmutableArray{DecisionDagBuilder.StateForCase})"/>
84SyntaxNode syntax,
100SyntaxNode syntax,
116SyntaxNode syntax,
129SyntaxNode syntax,
139SyntaxNode syntax,
164SyntaxNode syntax,
182SyntaxNode syntax,
321var syntax = pattern.Syntax;
429SyntaxNode syntax,
447SyntaxNode syntax,
537SyntaxNode syntax = pattern.Syntax;
558SyntaxNode syntax = pattern.Syntax;
707private BoundDecisionDag MakeBoundDecisionDag(SyntaxNode syntax, ImmutableArray<StateForCase> cases)
984BoundDecisionDagNode finalState(SyntaxNode syntax, LabelSymbol label, ImmutableArray<BoundPatternBinding> bindings)
1197SyntaxNode syntax,
1361SyntaxNode syntax,
1832public readonly SyntaxNode Syntax;
1839SyntaxNode Syntax,
1992SyntaxNode syntax = test.Syntax;
Binder\ExecutableCodeBinder.cs (10)
28private readonly SyntaxNode _root;
29private readonly Action<Binder, SyntaxNode> _binderUpdatedHandler;
30private SmallDictionary<SyntaxNode, Binder> _lazyBinderMap;
32internal ExecutableCodeBinder(SyntaxNode root, Symbol memberSymbol, Binder next, Action<Binder, SyntaxNode> binderUpdatedHandler = null)
38internal ExecutableCodeBinder(SyntaxNode root, Symbol memberSymbol, Binder next, BinderFlags additionalFlags)
58internal override Binder GetBinder(SyntaxNode node)
66SmallDictionary<SyntaxNode, Binder> map;
83map = SmallDictionary<SyntaxNode, Binder>.Empty;
90private SmallDictionary<SyntaxNode, Binder> BinderMap
Binder\ExpressionVariableFinder.cs (11)
21private SyntaxNode _nodeToBind;
68public override void Visit(SyntaxNode node)
85SyntaxNode previousNodeToBind = _nodeToBind;
114SyntaxNode previousNodeToBind = _nodeToBind;
155SyntaxNode previousNodeToBind = _nodeToBind;
296protected abstract TFieldOrLocalSymbol MakePatternVariable(TypeSyntax type, SingleVariableDesignationSyntax designation, SyntaxNode nodeToBind);
475protected abstract TFieldOrLocalSymbol MakeDeclarationExpressionVariable(DeclarationExpressionSyntax node, SingleVariableDesignationSyntax designation, BaseArgumentListSyntax argumentListSyntax, SyntaxNode nodeToBind);
535protected override LocalSymbol MakePatternVariable(TypeSyntax type, SingleVariableDesignationSyntax designation, SyntaxNode nodeToBind)
561protected override LocalSymbol MakeDeclarationExpressionVariable(DeclarationExpressionSyntax node, SingleVariableDesignationSyntax designation, BaseArgumentListSyntax argumentListSyntaxOpt, SyntaxNode nodeToBind)
648protected override Symbol MakePatternVariable(TypeSyntax type, SingleVariableDesignationSyntax designation, SyntaxNode nodeToBind)
656protected override Symbol MakeDeclarationExpressionVariable(DeclarationExpressionSyntax node, SingleVariableDesignationSyntax designation, BaseArgumentListSyntax argumentListSyntaxOpt, SyntaxNode nodeToBind)
BoundTree\Constructors.cs (48)
14SyntaxNode syntax,
24SyntaxNode syntax,
36SyntaxNode syntax,
85SyntaxNode syntax,
118SyntaxNode node,
163public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, MethodSymbol method)
168public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, MethodSymbol method, BoundExpression arg0)
173public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, MethodSymbol method, BoundExpression arg0, BoundExpression arg1)
178public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, MethodSymbol method, ImmutableArray<BoundExpression> arguments)
202public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, params BoundExpression[] arguments)
206public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<BoundExpression> arguments)
215SyntaxNode node,
238SyntaxNode syntax,
271public static BoundConversion SynthesizedNonUserDefined(SyntaxNode syntax, BoundExpression operand, Conversion conversion, TypeSymbol type, ConstantValue? constantValueOpt = null)
293SyntaxNode syntax,
319SyntaxNode syntax,
343SyntaxNode syntax,
371SyntaxNode syntax,
394SyntaxNode syntax,
430SyntaxNode syntax,
473public BoundParameter(SyntaxNode syntax, ParameterSymbol parameterSymbol, bool hasErrors = false)
478public BoundParameter(SyntaxNode syntax, ParameterSymbol parameterSymbol)
486public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, BoundTypeExpression? boundContainingTypeOpt, ImmutableArray<BoundExpression> boundDimensionsOpt, TypeWithAnnotations typeWithAnnotations, bool hasErrors = false)
492public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, BoundTypeExpression? boundContainingTypeOpt, TypeWithAnnotations typeWithAnnotations, bool hasErrors = false)
497public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, TypeWithAnnotations typeWithAnnotations, bool hasErrors = false)
502public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, TypeSymbol type, bool hasErrors = false)
507public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, ImmutableArray<BoundExpression> dimensionsOpt, TypeWithAnnotations typeWithAnnotations, bool hasErrors = false)
515public BoundNamespaceExpression(SyntaxNode syntax, NamespaceSymbol namespaceSymbol, bool hasErrors = false)
520public BoundNamespaceExpression(SyntaxNode syntax, NamespaceSymbol namespaceSymbol)
533public BoundAssignmentOperator(SyntaxNode syntax, BoundExpression left, BoundExpression right,
542public BoundBadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol?> symbols, ImmutableArray<BoundExpression> childBoundNodes, TypeSymbol type)
551public static BoundStatementList Synthesized(SyntaxNode syntax, params BoundStatement[] statements)
556public static BoundStatementList Synthesized(SyntaxNode syntax, bool hasErrors, params BoundStatement[] statements)
561public static BoundStatementList Synthesized(SyntaxNode syntax, ImmutableArray<BoundStatement> statements)
566public static BoundStatementList Synthesized(SyntaxNode syntax, bool hasErrors, ImmutableArray<BoundStatement> statements)
574public static BoundReturnStatement Synthesized(SyntaxNode syntax, RefKind refKind, BoundExpression expression, bool hasErrors = false)
582public static BoundYieldBreakStatement Synthesized(SyntaxNode syntax, bool hasErrors = false)
590public BoundGotoStatement(SyntaxNode syntax, LabelSymbol label, bool hasErrors = false)
598public BoundBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
603public static BoundBlock SynthesizedNoLocals(SyntaxNode syntax, BoundStatement statement)
609public static BoundBlock SynthesizedNoLocals(SyntaxNode syntax, ImmutableArray<BoundStatement> statements)
614public static BoundBlock SynthesizedNoLocals(SyntaxNode syntax, params BoundStatement[] statements)
622public BoundDefaultExpression(SyntaxNode syntax, TypeSymbol type, bool hasErrors = false)
630public BoundTryStatement(SyntaxNode syntax, BoundBlock tryBlock, ImmutableArray<BoundCatchBlock> catchBlocks, BoundBlock? finallyBlockOpt, LabelSymbol? finallyLabelOpt = null)
638public BoundAddressOfOperator(SyntaxNode syntax, BoundExpression operand, TypeSymbol type, bool hasErrors = false)
646public BoundDagTemp(SyntaxNode syntax, TypeSymbol type, BoundDagEvaluation? source)
656public BoundCompoundAssignmentOperator(SyntaxNode syntax,
686SyntaxNode syntax,
BoundTree\UnboundLambda.cs (6)
24SyntaxNode Syntax { get; }
33SyntaxNode IBoundLambdaOrFunction.Syntax { get { return Syntax; } }
80SyntaxNode IBoundLambdaOrFunction.Syntax { get { return Syntax; } }
82public BoundLambda(SyntaxNode syntax, UnboundLambda unboundLambda, BoundBlock body, ImmutableBindingDiagnostic<AssemblySymbol> diagnostics, Binder binder, TypeSymbol? delegateType, InferredLambdaReturnType inferredReturnType)
421private UnboundLambda(SyntaxNode syntax, UnboundLambdaState state, FunctionTypeSymbol? functionType, bool withDependencies, NullableWalker.VariableState? nullableState, bool hasErrors) :
1467var syntax = UnboundLambda.Syntax;
CodeGen\EmitExpression.cs (12)
820var syntax = node.Syntax;
1391private void EmitLoadIndirect(TypeSymbol type, SyntaxNode syntaxNode)
2977private void EmitArrayElementStore(ArrayTypeSymbol arrayType, SyntaxNode syntaxNode)
2992private void EmitVectorElementStore(ArrayTypeSymbol arrayType, SyntaxNode syntaxNode)
3092private void EmitIndirectStore(TypeSymbol type, SyntaxNode syntaxNode)
3209private void EmitDefaultValue(TypeSymbol type, bool used, SyntaxNode syntaxNode)
3253private void EmitConstantExpression(TypeSymbol type, ConstantValue constantValue, bool used, SyntaxNode syntaxNode)
3269private void EmitInitObj(TypeSymbol type, bool used, SyntaxNode syntaxNode)
3351private void EmitHoistedVariableId(FieldSymbol field, SyntaxNode syntax)
3712private void EmitStaticCast(TypeSymbol to, SyntaxNode syntax)
3732private void EmitBox(TypeSymbol type, SyntaxNode syntaxNode)
3770private void EmitCallCleanup(SyntaxNode syntax, UseKind useKind, MethodSymbol method)
CodeGen\EmitStatement.cs (13)
1092var localSyntax = !declaringReferences.IsEmpty ? (CSharpSyntaxNode)declaringReferences[0].GetSyntax() : catchBlock.Syntax;
1319SyntaxNode syntaxNode,
1357void emitLengthDispatch(LengthBasedStringSwitchData lengthBasedSwitchInfo, LocalOrParameter keyTemp, LabelSymbol fallThroughLabel, SyntaxNode syntaxNode)
1391void emitCharDispatches(LengthBasedStringSwitchData lengthBasedSwitchInfo, LocalOrParameter keyTemp, LabelSymbol fallThroughLabel, SyntaxNode syntaxNode)
1429void emitFinalDispatches(LengthBasedStringSwitchData lengthBasedSwitchInfo, LocalOrParameter keyTemp, TypeSymbol keyType, LabelSymbol fallThroughLabel, SyntaxNode syntaxNode)
1458SyntaxNode syntaxNode,
1601private Cci.IMethodReference? GetLengthMethodRef(SyntaxNode syntaxNode, TypeSymbol keyType, bool isReadOnlySpan, bool isSpanOrReadOnlySpan)
1625private Microsoft.Cci.IMethodReference? GetIndexerRef(SyntaxNode syntaxNode, TypeSymbol keyType, bool isReadOnlySpan, bool isSpanOrReadOnlySpan)
1660private void EmitStringCompareAndBranch(LocalOrParameter key, SyntaxNode syntaxNode, ConstantValue stringConstant, object targetLabel, Microsoft.Cci.IReference stringEqualityMethodRef)
1698private void EmitCharCompareAndBranch(LocalOrParameter key, SyntaxNode syntaxNode, ConstantValue stringConstant, object targetLabel, Cci.IReference sequenceEqualsRef, Cci.IReference asSpanRef)
1733private LocalDefinition DefineLocal(LocalSymbol local, SyntaxNode syntaxNode)
1844var syntax = local.GetDeclaratorSyntax();
1877private LocalDefinition AllocateTemp(TypeSymbol type, SyntaxNode syntaxNode, LocalSlotConstraints slotConstraints = LocalSlotConstraints.None)
Compilation\CSharpSemanticModel.cs (34)
474protected override IOperation GetOperationCore(SyntaxNode node, CancellationToken cancellationToken)
1008public Conversion GetConversion(SyntaxNode expression, CancellationToken cancellationToken = default(CancellationToken))
1229internal abstract MemberSemanticModel GetMemberModel(SyntaxNode node);
1231internal bool IsInTree(SyntaxNode node)
1310protected int GetAdjustedNodePosition(SyntaxNode node)
1865var curr = token.Parent;
3961SyntaxNode parentSyntax = boundNodeForSyntacticParent.Syntax;
4923protected sealed override SyntaxNode RootCore => this.Root;
4925private SymbolInfo GetSymbolInfoFromNode(SyntaxNode node, CancellationToken cancellationToken)
4952private TypeInfo GetTypeInfoFromNode(SyntaxNode node, CancellationToken cancellationToken)
4973private ImmutableArray<ISymbol> GetMemberGroupFromNode(SyntaxNode node, CancellationToken cancellationToken)
4990protected sealed override ImmutableArray<ISymbol> GetMemberGroupCore(SyntaxNode node, CancellationToken cancellationToken)
4996protected sealed override SymbolInfo GetSpeculativeSymbolInfoCore(int position, SyntaxNode node, SpeculativeBindingOption bindingOption)
5015protected sealed override TypeInfo GetSpeculativeTypeInfoCore(int position, SyntaxNode node, SpeculativeBindingOption bindingOption)
5022protected sealed override IAliasSymbol GetSpeculativeAliasInfoCore(int position, SyntaxNode nameSyntax, SpeculativeBindingOption bindingOption)
5029protected sealed override SymbolInfo GetSymbolInfoCore(SyntaxNode node, CancellationToken cancellationToken)
5034protected sealed override TypeInfo GetTypeInfoCore(SyntaxNode node, CancellationToken cancellationToken)
5039protected sealed override IAliasSymbol GetAliasInfoCore(SyntaxNode node, CancellationToken cancellationToken)
5044protected sealed override PreprocessingSymbolInfo GetPreprocessingSymbolInfoCore(SyntaxNode node)
5051protected sealed override ISymbol GetDeclaredSymbolCore(SyntaxNode node, CancellationToken cancellationToken)
5139protected sealed override ImmutableArray<ISymbol> GetDeclaredSymbolsCore(SyntaxNode declaration, CancellationToken cancellationToken = default(CancellationToken))
5162internal override void ComputeDeclarationsInNode(SyntaxNode node, ISymbol associatedSymbol, bool getSymbol, ArrayBuilder<DeclarationInfo> builder, CancellationToken cancellationToken, int? levelsToCompute = null)
5167internal abstract override Func<SyntaxNode, bool> GetSyntaxNodesToAnalyzeFilter(SyntaxNode declaredNode, ISymbol declaredSymbol);
5168internal abstract override bool ShouldSkipSyntaxNodeAnalysis(SyntaxNode node, ISymbol containingSymbol);
5170protected internal override SyntaxNode GetTopmostNodeForDiagnosticAnalysis(ISymbol symbol, SyntaxNode declaringSyntax)
5213protected sealed override ControlFlowAnalysis AnalyzeControlFlowCore(SyntaxNode firstStatement, SyntaxNode lastStatement)
5238protected sealed override ControlFlowAnalysis AnalyzeControlFlowCore(SyntaxNode statement)
5253protected sealed override DataFlowAnalysis AnalyzeDataFlowCore(SyntaxNode firstStatement, SyntaxNode lastStatement)
5278protected sealed override DataFlowAnalysis AnalyzeDataFlowCore(SyntaxNode statementOrExpression)
5297protected sealed override Optional<object> GetConstantValueCore(SyntaxNode node, CancellationToken cancellationToken)
Compilation\MemberSemanticModel.cs (21)
31private readonly Dictionary<SyntaxNode, ImmutableArray<BoundNode>> _guardedBoundNodeMap = new Dictionary<SyntaxNode, ImmutableArray<BoundNode>>();
32private readonly Dictionary<SyntaxNode, IOperation> _guardedIOperationNodeMap = new Dictionary<SyntaxNode, IOperation>();
33private Dictionary<SyntaxNode, BoundStatement> _lazyGuardedSynthesizedStatementsMap;
135internal override MemberSemanticModel GetMemberModel(SyntaxNode node)
204private Binder GetEnclosingBinderInternalWithinRoot(SyntaxNode node, int position)
210private static Binder GetEnclosingBinderInternalWithinRoot(SyntaxNode node, int position, Binder rootBinder, SyntaxNode root)
224for (var current = node; binder == null; current = current.ParentOrStructuredTriviaParent)
1406_lazyGuardedSynthesizedStatementsMap = new Dictionary<SyntaxNode, BoundStatement>();
1464protected void UnguardedAddBoundTreeForStandaloneSyntax(SyntaxNode syntax, BoundNode bound, NullableWalker.SnapshotManager manager = null, ImmutableDictionary<Symbol, Symbol> remappedSymbols = null)
1472protected void GuardedAddBoundTreeForStandaloneSyntax(SyntaxNode syntax, BoundNode bound, NullableWalker.SnapshotManager manager = null, ImmutableDictionary<Symbol, Symbol> remappedSymbols = null)
1867private static SyntaxNode AdjustStartingNodeAccordingToNewRoot(SyntaxNode startingNode, SyntaxNode root)
1869SyntaxNode result = startingNode.Contains(root) ? root : startingNode;
2325internal sealed override Func<SyntaxNode, bool> GetSyntaxNodesToAnalyzeFilter(SyntaxNode declaredNode, ISymbol declaredSymbol)
2330internal sealed override bool ShouldSkipSyntaxNodeAnalysis(SyntaxNode node, ISymbol containingSymbol)
2369internal override Binder GetBinder(SyntaxNode node)
CSharpExtensions.cs (20)
42/// Determines if <see cref="SyntaxNode"/> is of a specified kind.
47public static bool IsKind([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind)
63/// <inheritdoc cref="SyntaxNode.ContainsDirective"/>
64public static bool ContainsDirective(this SyntaxNode node, SyntaxKind kind)
84where TNode : SyntaxNode
93where TNode : SyntaxNode
105where TNode : SyntaxNode
114where TNode : SyntaxNode
205/// Returns <see cref="SyntaxKind"/> for <see cref="SyntaxNode"/> from <see cref="SyntaxNode.RawKind"/> property.
207public static SyntaxKind Kind(this SyntaxNode node)
214/// Returns <see cref="SyntaxKind"/> for <see cref="SyntaxNode"/> from <see cref="SyntaxNodeOrToken.RawKind"/> property.
322internal static Syntax.InternalSyntax.DirectiveStack ApplyDirectives(this SyntaxNode node, Syntax.InternalSyntax.DirectiveStack stack)
339if (nodeOrToken.AsNode(out var node))
352internal static SeparatedSyntaxList<TOther> AsSeparatedList<TOther>(this SyntaxNodeOrTokenList list) where TOther : SyntaxNode
357var node = i.AsNode();
372internal static IList<DirectiveTriviaSyntax> GetDirectives(this SyntaxNode node, Func<DirectiveTriviaSyntax, bool>? filter = null)
380public static DirectiveTriviaSyntax? GetFirstDirective(this SyntaxNode node, Func<DirectiveTriviaSyntax, bool>? predicate = null)
388public static DirectiveTriviaSyntax? GetLastDirective(this SyntaxNode node, Func<DirectiveTriviaSyntax, bool>? predicate = null)
764public static Conversion GetConversion(this SemanticModel? semanticModel, SyntaxNode expression, CancellationToken cancellationToken = default(CancellationToken))
Emitter\Model\PEModuleBuilder.cs (15)
26internal abstract class PEModuleBuilder : PEModuleBuilder<CSharpCompilation, SourceModuleSymbol, AssemblySymbol, TypeSymbol, NamedTypeSymbol, MethodSymbol, SyntaxNode, NoPia.EmbeddedTypesManager, ModuleCompilationState>
795private NamedTypeSymbol GetUntranslatedSpecialType(SpecialType specialType, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
812internal sealed override Cci.INamedTypeReference GetSpecialType(SpecialType specialType, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
937SyntaxNode syntaxNodeOpt,
1058private void CheckTupleUnderlyingType(NamedTypeSymbol namedTypeSymbol, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
1118SyntaxNode syntaxNodeOpt,
1150SyntaxNode syntaxNodeOpt,
1267SyntaxNode syntaxNodeOpt,
1301SyntaxNode syntaxNodeOpt,
1493SyntaxNode syntaxNodeOpt,
1542protected override Cci.IMethodDefinition CreatePrivateImplementationDetailsStaticConstructor(PrivateImplementationDetails details, SyntaxNode syntaxOpt, DiagnosticBag diagnostics)
1833internal MethodSymbol EnsureThrowIfNullFunctionExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, DiagnosticBag diagnostics)
1860internal MethodSymbol EnsureThrowSwitchExpressionExceptionExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, DiagnosticBag diagnostics)
1881internal MethodSymbol EnsureThrowSwitchExpressionExceptionParameterlessExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, DiagnosticBag diagnostics)
1906internal MethodSymbol EnsureThrowInvalidOperationExceptionExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, DiagnosticBag diagnostics)
Emitter\NoPia\EmbeddedTypesManager.cs (16)
33EmbeddedTypesManager<PEModuleBuilder, ModuleCompilationState, EmbeddedTypesManager, SyntaxNode, CSharpAttributeData,
55public NamedTypeSymbol GetSystemStringType(SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
82public MethodSymbol GetWellKnownMethod(WellKnownMember method, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
90private MethodSymbol LazyGetWellKnownTypeMethod(ref MethodSymbol lazyMethod, WellKnownMember member, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
124internal override CSharpAttributeData CreateSynthesizedAttribute(WellKnownMember constructor, CSharpAttributeData attrData, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
237SyntaxNode syntaxNodeOpt,
313private static void ReportNotEmbeddableSymbol(ErrorCode error, Symbol symbol, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics, EmbeddedTypesManager optTypeManager)
322internal static void Error(DiagnosticBag diagnostics, ErrorCode code, SyntaxNode syntaxOpt, params object[] args)
327private static void Error(DiagnosticBag diagnostics, SyntaxNode syntaxOpt, DiagnosticInfo info)
335SyntaxNode syntaxNodeOpt,
352SyntaxNode syntaxNodeOpt,
418SyntaxNode syntaxNodeOpt,
454SyntaxNode syntaxNodeOpt,
515SyntaxNode syntaxNodeOpt,
549SyntaxNode syntaxNodeOpt,
588protected override EmbeddedType GetEmbeddedTypeForMember(SymbolAdapter member, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
Errors\MessageProvider.cs (7)
266protected override void ReportInvalidAttributeArgument(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, int parameterIndex, AttributeData attribute)
273protected override void ReportInvalidNamedArgument(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, int namedArgumentIndex, ITypeSymbol attributeClass, string parameterName)
279protected override void ReportParameterNotValidForType(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, int namedArgumentIndex)
285protected override void ReportMarshalUnmanagedTypeNotValidForFields(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, int parameterIndex, string unmanagedTypeName, AttributeData attribute)
292protected override void ReportMarshalUnmanagedTypeOnlyValidForFields(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, int parameterIndex, string unmanagedTypeName, AttributeData attribute)
299protected override void ReportAttributeParameterRequired(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, string parameterName)
305protected override void ReportAttributeParameterRequired(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, string parameterName1, string parameterName2)
FlowAnalysis\DefiniteAssignment.cs (8)
450protected virtual void ReportUnassignedOutParameter(ParameterSymbol parameter, SyntaxNode node, Location location)
1107protected void CheckAssigned(Symbol symbol, SyntaxNode node)
1126private void ReportUnassignedIfNotCapturedInLocalFunction(Symbol symbol, SyntaxNode node, int slot, bool skipIfUseBeforeDeclaration = true)
1143protected virtual void ReportUnassigned(Symbol symbol, SyntaxNode node, int slot, bool skipIfUseBeforeDeclaration)
1307protected virtual void CheckAssigned(BoundExpression expr, FieldSymbol fieldSymbol, SyntaxNode node)
1806protected override void LeaveParameters(ImmutableArray<ParameterSymbol> parameters, SyntaxNode syntax, Location location)
1817protected override void LeaveParameter(ParameterSymbol parameter, SyntaxNode syntax, Location location)
2426protected void CheckAssigned(BoundExpression expr, SyntaxNode node)
FlowAnalysis\NullableWalker.cs (22)
589void enforceMemberNotNull(SyntaxNode? syntaxOpt, LocalState state)
758void enforceMemberNotNullOnMember(SyntaxNode? syntaxOpt, LocalState state, MethodSymbol method, string memberName)
804void enforceMemberNotNullWhenIfAffected(SyntaxNode? syntaxOpt, bool sense, ImmutableArray<Symbol> members, LocalState state, LocalState otherState)
816void enforceMemberNotNullWhen(SyntaxNode? syntaxOpt, bool sense, LocalState state)
831void reportMemberIfBadConditionalState(SyntaxNode? syntaxOpt, bool sense, Symbol member, LocalState state)
1143private void EnforceParameterNotNullOnExit(SyntaxNode? syntaxOpt, LocalState state)
1183private void EnforceParameterNotNullWhenOnExit(SyntaxNode syntax, ImmutableArray<ParameterSymbol> parameters, bool sense, LocalState stateWhen)
1196private void ReportParameterIfBadConditionalState(SyntaxNode syntax, ParameterSymbol parameter, bool sense, LocalState stateWhen)
1243private void EnforceNotNullIfNotNull(SyntaxNode? syntaxOpt, LocalState state, ImmutableArray<ParameterSymbol> parameters, ImmutableHashSet<string> inputParamNames, NullableFlowState outputState, ParameterSymbol? outputParam)
1272private void EnforceDoesNotReturn(SyntaxNode? syntaxOpt)
1584internal static bool NeedsAnalysis(CSharpCompilation compilation, SyntaxNode syntaxNode)
1595SyntaxNode syntax,
2438private void ReportNullabilityMismatchInAssignment(SyntaxNode syntaxNode, object sourceType, object destinationType)
2505private void ReportDiagnostic(ErrorCode errorCode, SyntaxNode syntaxNode, params object[] arguments)
3151SyntaxNode syntax,
6082var syntax = node.Syntax;
6091private static bool HasImplicitTypeArguments(SyntaxNode syntax)
6215var syntax = node.Syntax;
7171private void CheckMethodConstraints(SyntaxNode syntax, MethodSymbol method)
8913var syntax = group.Syntax;
9752private void ReportNullabilityMismatchInArgument(SyntaxNode argument, TypeSymbol argumentType, ParameterSymbol parameter, TypeSymbol parameterType, bool forOutput)
10900private bool ReportPossibleNullReceiverIfNeeded(TypeSymbol type, NullableFlowState state, bool checkNullableValueType, SyntaxNode syntax, out bool reportedDiagnostic)
Generated\BoundNodes.xml.Generated.cs (321)
265protected BoundInitializer(BoundKind kind, SyntaxNode syntax, bool hasErrors)
270protected BoundInitializer(BoundKind kind, SyntaxNode syntax)
279protected BoundEqualsValue(BoundKind kind, SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
296public BoundFieldEqualsValue(SyntaxNode syntax, FieldSymbol field, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
326public BoundPropertyEqualsValue(SyntaxNode syntax, PropertySymbol property, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
356public BoundParameterEqualsValue(SyntaxNode syntax, ParameterSymbol parameter, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
386public BoundGlobalStatementInitializer(SyntaxNode syntax, BoundStatement statement, bool hasErrors = false)
414protected BoundExpression(BoundKind kind, SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
420protected BoundExpression(BoundKind kind, SyntaxNode syntax, TypeSymbol? type)
431protected BoundValuePlaceholderBase(BoundKind kind, SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
436protected BoundValuePlaceholderBase(BoundKind kind, SyntaxNode syntax, TypeSymbol? type)
445protected BoundEarlyValuePlaceholderBase(BoundKind kind, SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
450protected BoundEarlyValuePlaceholderBase(BoundKind kind, SyntaxNode syntax, TypeSymbol? type)
459public BoundValuePlaceholder(SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
464public BoundValuePlaceholder(SyntaxNode syntax, TypeSymbol? type)
487public BoundCapturedReceiverPlaceholder(SyntaxNode syntax, BoundExpression receiver, uint localScopeDepth, TypeSymbol? type, bool hasErrors = false)
517public BoundDeconstructValuePlaceholder(SyntaxNode syntax, Symbol? variableSymbol, bool isDiscardExpression, TypeSymbol type, bool hasErrors)
527public BoundDeconstructValuePlaceholder(SyntaxNode syntax, Symbol? variableSymbol, bool isDiscardExpression, TypeSymbol type)
558public BoundTupleOperandPlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
566public BoundTupleOperandPlaceholder(SyntaxNode syntax, TypeSymbol type)
593public BoundAwaitableValuePlaceholder(SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
598public BoundAwaitableValuePlaceholder(SyntaxNode syntax, TypeSymbol? type)
622public BoundDisposableValuePlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
630public BoundDisposableValuePlaceholder(SyntaxNode syntax, TypeSymbol type)
657public BoundObjectOrCollectionValuePlaceholder(SyntaxNode syntax, bool isNewInstance, TypeSymbol type, bool hasErrors)
666public BoundObjectOrCollectionValuePlaceholder(SyntaxNode syntax, bool isNewInstance, TypeSymbol type)
695public BoundImplicitIndexerValuePlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
703public BoundImplicitIndexerValuePlaceholder(SyntaxNode syntax, TypeSymbol type)
730public BoundImplicitIndexerReceiverPlaceholder(SyntaxNode syntax, bool isEquivalentToThisReference, TypeSymbol type, bool hasErrors)
739public BoundImplicitIndexerReceiverPlaceholder(SyntaxNode syntax, bool isEquivalentToThisReference, TypeSymbol type)
768public BoundListPatternReceiverPlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
776public BoundListPatternReceiverPlaceholder(SyntaxNode syntax, TypeSymbol type)
803public BoundListPatternIndexPlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
811public BoundListPatternIndexPlaceholder(SyntaxNode syntax, TypeSymbol type)
838public BoundSlicePatternReceiverPlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
846public BoundSlicePatternReceiverPlaceholder(SyntaxNode syntax, TypeSymbol type)
873public BoundSlicePatternRangePlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
881public BoundSlicePatternRangePlaceholder(SyntaxNode syntax, TypeSymbol type)
908public BoundDup(SyntaxNode syntax, RefKind refKind, TypeSymbol? type, bool hasErrors)
914public BoundDup(SyntaxNode syntax, RefKind refKind, TypeSymbol? type)
939public BoundPassByCopy(SyntaxNode syntax, BoundExpression expression, TypeSymbol? type, bool hasErrors = false)
967public BoundBadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol?> symbols, ImmutableArray<BoundExpression> childBoundNodes, TypeSymbol? type, bool hasErrors = false)
1000public BoundBadStatement(SyntaxNode syntax, ImmutableArray<BoundNode> childBoundNodes, bool hasErrors = false)
1028public BoundExtractedFinallyBlock(SyntaxNode syntax, BoundBlock finallyBlock, bool hasErrors = false)
1056public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, BoundTypeExpression? boundContainingTypeOpt, ImmutableArray<BoundExpression> boundDimensionsOpt, TypeWithAnnotations typeWithAnnotations, TypeSymbol type, bool hasErrors = false)
1091public BoundTypeOrValueExpression(SyntaxNode syntax, BoundTypeOrValueData data, TypeSymbol type, bool hasErrors)
1100public BoundTypeOrValueExpression(SyntaxNode syntax, BoundTypeOrValueData data, TypeSymbol type)
1129public BoundNamespaceExpression(SyntaxNode syntax, NamespaceSymbol namespaceSymbol, AliasSymbol? aliasOpt, bool hasErrors)
1139public BoundNamespaceExpression(SyntaxNode syntax, NamespaceSymbol namespaceSymbol, AliasSymbol? aliasOpt)
1170public BoundUnaryOperator(SyntaxNode syntax, UnaryOperatorKind operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1212public BoundIncrementOperator(SyntaxNode syntax, UnaryOperatorKind operatorKind, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, BoundValuePlaceholder? resultPlaceholder, BoundExpression? resultConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1260public BoundAddressOfOperator(SyntaxNode syntax, BoundExpression operand, bool isManaged, TypeSymbol type, bool hasErrors = false)
1292public BoundUnconvertedAddressOfOperator(SyntaxNode syntax, BoundMethodGroup operand, bool hasErrors = false)
1321public BoundFunctionPointerLoad(SyntaxNode syntax, MethodSymbol targetMethod, TypeSymbol? constrainedToTypeOpt, TypeSymbol type, bool hasErrors)
1332public BoundFunctionPointerLoad(SyntaxNode syntax, MethodSymbol targetMethod, TypeSymbol? constrainedToTypeOpt, TypeSymbol type)
1364public BoundPointerIndirectionOperator(SyntaxNode syntax, BoundExpression operand, bool refersToLocation, TypeSymbol type, bool hasErrors = false)
1396public BoundPointerElementAccess(SyntaxNode syntax, BoundExpression expression, BoundExpression index, bool @checked, bool refersToLocation, TypeSymbol type, bool hasErrors = false)
1433public BoundFunctionPointerInvocation(SyntaxNode syntax, BoundExpression invokedExpression, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
1470public BoundRefTypeOperator(SyntaxNode syntax, BoundExpression operand, MethodSymbol? getTypeFromHandle, TypeSymbol type, bool hasErrors = false)
1502public BoundMakeRefOperator(SyntaxNode syntax, BoundExpression operand, TypeSymbol type, bool hasErrors = false)
1532public BoundRefValueOperator(SyntaxNode syntax, NullableAnnotation nullableAnnotation, BoundExpression operand, TypeSymbol type, bool hasErrors = false)
1564public BoundFromEndIndexExpression(SyntaxNode syntax, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol type, bool hasErrors = false)
1596public BoundRangeExpression(SyntaxNode syntax, BoundExpression? leftOperandOpt, BoundExpression? rightOperandOpt, MethodSymbol? methodOpt, TypeSymbol type, bool hasErrors = false)
1629protected BoundBinaryOperatorBase(BoundKind kind, SyntaxNode syntax, BoundExpression left, BoundExpression right, TypeSymbol type, bool hasErrors = false)
1648public BoundBinaryOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundBinaryOperator.UncommonData? data, LookupResultKind resultKind, BoundExpression left, BoundExpression right, TypeSymbol type, bool hasErrors = false)
1682public BoundTupleBinaryOperator(SyntaxNode syntax, BoundExpression left, BoundExpression right, BinaryOperatorKind operatorKind, TupleBinaryOperatorInfo.Multiple operators, TypeSymbol type, bool hasErrors = false)
1720public BoundUserDefinedConditionalLogicalOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, MethodSymbol logicalOperator, MethodSymbol trueOperator, MethodSymbol falseOperator, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, BoundExpression left, BoundExpression right, TypeSymbol type, bool hasErrors = false)
1765public BoundCompoundAssignmentOperator(SyntaxNode syntax, BinaryOperatorSignature @operator, BoundExpression left, BoundExpression right, BoundValuePlaceholder? leftPlaceholder, BoundExpression? leftConversion, BoundValuePlaceholder? finalPlaceholder, BoundExpression? finalConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1812public BoundAssignmentOperator(SyntaxNode syntax, BoundExpression left, BoundExpression right, bool isRef, TypeSymbol type, bool hasErrors = false)
1846public BoundDeconstructionAssignmentOperator(SyntaxNode syntax, BoundTupleExpression left, BoundConversion right, bool isUsed, TypeSymbol type, bool hasErrors = false)
1881public BoundNullCoalescingOperator(SyntaxNode syntax, BoundExpression leftOperand, BoundExpression rightOperand, BoundValuePlaceholder? leftPlaceholder, BoundExpression? leftConversion, BoundNullCoalescingOperatorResultKind operatorResultKind, bool @checked, TypeSymbol type, bool hasErrors = false)
1922public BoundNullCoalescingAssignmentOperator(SyntaxNode syntax, BoundExpression leftOperand, BoundExpression rightOperand, TypeSymbol? type, bool hasErrors = false)
1953public BoundUnconvertedConditionalOperator(SyntaxNode syntax, BoundExpression condition, BoundExpression consequence, BoundExpression alternative, ConstantValue? constantValueOpt, ErrorCode noCommonTypeError, bool hasErrors = false)
1992public BoundConditionalOperator(SyntaxNode syntax, bool isRef, BoundExpression condition, BoundExpression consequence, BoundExpression alternative, ConstantValue? constantValueOpt, TypeSymbol? naturalTypeOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
2036public BoundArrayAccess(SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundExpression> indices, TypeSymbol type, bool hasErrors = false)
2069public BoundArrayLength(SyntaxNode syntax, BoundExpression expression, TypeSymbol type, bool hasErrors = false)
2099public BoundAwaitableInfo(SyntaxNode syntax, BoundAwaitableValuePlaceholder? awaitableInstancePlaceholder, bool isDynamic, BoundExpression? getAwaiter, PropertySymbol? isCompleted, MethodSymbol? getResult, bool hasErrors = false)
2132public BoundAwaitExpression(SyntaxNode syntax, BoundExpression expression, BoundAwaitableInfo awaitableInfo, TypeSymbol type, bool hasErrors = false)
2165protected BoundTypeOf(BoundKind kind, SyntaxNode syntax, MethodSymbol? getTypeFromHandle, TypeSymbol type, bool hasErrors)
2174protected BoundTypeOf(BoundKind kind, SyntaxNode syntax, MethodSymbol? getTypeFromHandle, TypeSymbol type)
2189public BoundTypeOfOperator(SyntaxNode syntax, BoundTypeExpression sourceType, MethodSymbol? getTypeFromHandle, TypeSymbol type, bool hasErrors = false)
2218public BoundBlockInstrumentation(SyntaxNode syntax, LocalSymbol local, BoundStatement prologue, BoundStatement epilogue, bool hasErrors = false)
2252public BoundMethodDefIndex(SyntaxNode syntax, MethodSymbol method, TypeSymbol type, bool hasErrors)
2262public BoundMethodDefIndex(SyntaxNode syntax, MethodSymbol method, TypeSymbol type)
2292public BoundLocalId(SyntaxNode syntax, LocalSymbol local, FieldSymbol? hoistedField, TypeSymbol type, bool hasErrors)
2303public BoundLocalId(SyntaxNode syntax, LocalSymbol local, FieldSymbol? hoistedField, TypeSymbol type)
2335public BoundParameterId(SyntaxNode syntax, ParameterSymbol parameter, FieldSymbol? hoistedField, TypeSymbol type, bool hasErrors)
2346public BoundParameterId(SyntaxNode syntax, ParameterSymbol parameter, FieldSymbol? hoistedField, TypeSymbol type)
2378public BoundStateMachineInstanceId(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
2386public BoundStateMachineInstanceId(SyntaxNode syntax, TypeSymbol type)
2413public BoundMaximumMethodDefIndex(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
2421public BoundMaximumMethodDefIndex(SyntaxNode syntax, TypeSymbol type)
2448public BoundInstrumentationPayloadRoot(SyntaxNode syntax, int analysisKind, TypeSymbol type, bool hasErrors)
2457public BoundInstrumentationPayloadRoot(SyntaxNode syntax, int analysisKind, TypeSymbol type)
2486public BoundModuleVersionId(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
2494public BoundModuleVersionId(SyntaxNode syntax, TypeSymbol type)
2521public BoundModuleVersionIdString(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
2529public BoundModuleVersionIdString(SyntaxNode syntax, TypeSymbol type)
2556public BoundSourceDocumentIndex(SyntaxNode syntax, Cci.DebugSourceDocument document, TypeSymbol type, bool hasErrors)
2566public BoundSourceDocumentIndex(SyntaxNode syntax, Cci.DebugSourceDocument document, TypeSymbol type)
2596public BoundMethodInfo(SyntaxNode syntax, MethodSymbol method, MethodSymbol? getMethodFromHandle, TypeSymbol type, bool hasErrors)
2607public BoundMethodInfo(SyntaxNode syntax, MethodSymbol method, MethodSymbol? getMethodFromHandle, TypeSymbol type)
2639public BoundFieldInfo(SyntaxNode syntax, FieldSymbol field, MethodSymbol? getFieldFromHandle, TypeSymbol type, bool hasErrors)
2650public BoundFieldInfo(SyntaxNode syntax, FieldSymbol field, MethodSymbol? getFieldFromHandle, TypeSymbol type)
2682public BoundDefaultLiteral(SyntaxNode syntax, bool hasErrors)
2687public BoundDefaultLiteral(SyntaxNode syntax)
2705public BoundDefaultExpression(SyntaxNode syntax, BoundTypeExpression? targetType, ConstantValue? constantValueOpt, TypeSymbol type, bool hasErrors = false)
2736public BoundIsOperator(SyntaxNode syntax, BoundExpression operand, BoundTypeExpression targetType, ConversionKind conversionKind, TypeSymbol type, bool hasErrors = false)
2771public BoundAsOperator(SyntaxNode syntax, BoundExpression operand, BoundTypeExpression targetType, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, TypeSymbol type, bool hasErrors = false)
2808public BoundSizeOfOperator(SyntaxNode syntax, BoundTypeExpression sourceType, ConstantValue? constantValueOpt, TypeSymbol type, bool hasErrors = false)
2840public BoundConversion(SyntaxNode syntax, BoundExpression operand, Conversion conversion, bool isBaseConversion, bool @checked, bool explicitCastInCode, ConstantValue? constantValueOpt, ConversionGroup? conversionGroupOpt, ImmutableArray<MethodSymbol> originalUserDefinedConversionsOpt, TypeSymbol type, bool hasErrors = false)
2884public BoundReadOnlySpanFromArray(SyntaxNode syntax, BoundExpression operand, MethodSymbol conversionMethod, TypeSymbol type, bool hasErrors = false)
2917public BoundArgList(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
2925public BoundArgList(SyntaxNode syntax, TypeSymbol type)
2952public BoundArgListOperator(SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt, TypeSymbol? type, bool hasErrors = false)
2983public BoundFixedLocalCollectionInitializer(SyntaxNode syntax, TypeSymbol elementPointerType, BoundValuePlaceholder? elementPointerPlaceholder, BoundExpression? elementPointerConversion, BoundExpression expression, MethodSymbol? getPinnableOpt, TypeSymbol type, bool hasErrors = false)
3022protected BoundStatement(BoundKind kind, SyntaxNode syntax, bool hasErrors)
3027protected BoundStatement(BoundKind kind, SyntaxNode syntax)
3036public BoundSequencePoint(SyntaxNode syntax, BoundStatement? statementOpt, bool hasErrors = false)
3061public BoundSequencePointWithSpan(SyntaxNode syntax, BoundStatement? statementOpt, TextSpan span, bool hasErrors = false)
3088public BoundSavePreviousSequencePoint(SyntaxNode syntax, object identifier, bool hasErrors)
3097public BoundSavePreviousSequencePoint(SyntaxNode syntax, object identifier)
3125public BoundRestorePreviousSequencePoint(SyntaxNode syntax, object identifier, bool hasErrors)
3134public BoundRestorePreviousSequencePoint(SyntaxNode syntax, object identifier)
3162public BoundStepThroughSequencePoint(SyntaxNode syntax, TextSpan span, bool hasErrors)
3168public BoundStepThroughSequencePoint(SyntaxNode syntax, TextSpan span)
3193public BoundBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<LocalFunctionSymbol> localFunctions, bool hasUnsafeModifier, BoundBlockInstrumentation? instrumentation, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
3229public BoundScope(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
3258public BoundStateMachineScope(SyntaxNode syntax, ImmutableArray<StateMachineFieldSymbol> fields, BoundStatement statement, bool hasErrors = false)
3289public BoundLocalDeclaration(SyntaxNode syntax, LocalSymbol localSymbol, BoundTypeExpression? declaredTypeOpt, BoundExpression? initializerOpt, ImmutableArray<BoundExpression> argumentsOpt, bool inferredType, bool hasErrors = false)
3325protected BoundMultipleLocalDeclarationsBase(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundLocalDeclaration> localDeclarations, bool hasErrors = false)
3339public BoundMultipleLocalDeclarations(SyntaxNode syntax, ImmutableArray<BoundLocalDeclaration> localDeclarations, bool hasErrors = false)
3365public BoundUsingLocalDeclarations(SyntaxNode syntax, MethodArgumentInfo? patternDisposeInfoOpt, BoundAwaitableInfo? awaitOpt, ImmutableArray<BoundLocalDeclaration> localDeclarations, bool hasErrors = false)
3395public BoundLocalFunctionStatement(SyntaxNode syntax, LocalFunctionSymbol symbol, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
3427public BoundNoOpStatement(SyntaxNode syntax, NoOpStatementFlavor flavor, bool hasErrors)
3433public BoundNoOpStatement(SyntaxNode syntax, NoOpStatementFlavor flavor)
3458public BoundReturnStatement(SyntaxNode syntax, RefKind refKind, BoundExpression? expressionOpt, bool @checked, bool hasErrors = false)
3487public BoundYieldReturnStatement(SyntaxNode syntax, BoundExpression expression, bool hasErrors = false)
3515public BoundYieldBreakStatement(SyntaxNode syntax, bool hasErrors)
3520public BoundYieldBreakStatement(SyntaxNode syntax)
3532public BoundThrowStatement(SyntaxNode syntax, BoundExpression? expressionOpt, bool hasErrors = false)
3557public BoundExpressionStatement(SyntaxNode syntax, BoundExpression expression, bool hasErrors = false)
3585public BoundBreakStatement(SyntaxNode syntax, GeneratedLabelSymbol label, bool hasErrors)
3594public BoundBreakStatement(SyntaxNode syntax, GeneratedLabelSymbol label)
3622public BoundContinueStatement(SyntaxNode syntax, GeneratedLabelSymbol label, bool hasErrors)
3631public BoundContinueStatement(SyntaxNode syntax, GeneratedLabelSymbol label)
3659public BoundSwitchStatement(SyntaxNode syntax, BoundExpression expression, ImmutableArray<LocalSymbol> innerLocals, ImmutableArray<LocalFunctionSymbol> innerLocalFunctions, ImmutableArray<BoundSwitchSection> switchSections, BoundDecisionDag reachabilityDecisionDag, BoundSwitchLabel? defaultLabel, GeneratedLabelSymbol breakLabel, bool hasErrors = false)
3704public BoundSwitchDispatch(SyntaxNode syntax, BoundExpression expression, ImmutableArray<(ConstantValue value, LabelSymbol label)> cases, LabelSymbol defaultLabel, LengthBasedStringSwitchData? lengthBasedStringSwitchDataOpt, bool hasErrors = false)
3740public BoundIfStatement(SyntaxNode syntax, BoundExpression condition, BoundStatement consequence, BoundStatement? alternativeOpt, bool hasErrors = false)
3773protected BoundLoopStatement(BoundKind kind, SyntaxNode syntax, GeneratedLabelSymbol breakLabel, GeneratedLabelSymbol continueLabel, bool hasErrors)
3784protected BoundLoopStatement(BoundKind kind, SyntaxNode syntax, GeneratedLabelSymbol breakLabel, GeneratedLabelSymbol continueLabel)
3801protected BoundConditionalLoopStatement(BoundKind kind, SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression condition, BoundStatement body, GeneratedLabelSymbol breakLabel, GeneratedLabelSymbol continueLabel, bool hasErrors = false)
3823public BoundDoStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression condition, BoundStatement body, GeneratedLabelSymbol breakLabel, GeneratedLabelSymbol continueLabel, bool hasErrors = false)
3853public BoundWhileStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression condition, BoundStatement body, GeneratedLabelSymbol breakLabel, GeneratedLabelSymbol continueLabel, bool hasErrors = false)
3883public BoundForStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> outerLocals, BoundStatement? initializer, ImmutableArray<LocalSymbol> innerLocals, BoundExpression? condition, BoundStatement? increment, BoundStatement body, GeneratedLabelSymbol breakLabel, GeneratedLabelSymbol continueLabel, bool hasErrors = false)
3925public BoundForEachStatement(SyntaxNode syntax, ForEachEnumeratorInfo? enumeratorInfoOpt, BoundValuePlaceholder? elementPlaceholder, BoundExpression? elementConversion, BoundTypeExpression iterationVariableType, ImmutableArray<LocalSymbol> iterationVariables, BoundExpression? iterationErrorExpressionOpt, BoundExpression expression, BoundForEachDeconstructStep? deconstructionOpt, BoundAwaitableInfo? awaitOpt, BoundStatement body, GeneratedLabelSymbol breakLabel, GeneratedLabelSymbol continueLabel, bool hasErrors = false)
3976public BoundForEachDeconstructStep(SyntaxNode syntax, BoundDeconstructionAssignmentOperator deconstructionAssignment, BoundDeconstructValuePlaceholder targetPlaceholder, bool hasErrors = false)
4007public BoundUsingStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundMultipleLocalDeclarations? declarationsOpt, BoundExpression? expressionOpt, BoundStatement body, BoundAwaitableInfo? awaitOpt, MethodArgumentInfo? patternDisposeInfoOpt, bool hasErrors = false)
4046public BoundFixedStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundMultipleLocalDeclarations declarations, BoundStatement body, bool hasErrors = false)
4080public BoundLockStatement(SyntaxNode syntax, BoundExpression argument, BoundStatement body, bool hasErrors = false)
4111public BoundTryStatement(SyntaxNode syntax, BoundBlock tryBlock, ImmutableArray<BoundCatchBlock> catchBlocks, BoundBlock? finallyBlockOpt, LabelSymbol? finallyLabelOpt, bool preferFaultHandler, bool hasErrors = false)
4148public BoundCatchBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression? exceptionSourceOpt, TypeSymbol? exceptionTypeOpt, BoundStatementList? exceptionFilterPrologueOpt, BoundExpression? exceptionFilterOpt, BoundBlock body, bool isSynthesizedAsyncCatchAll, bool hasErrors = false)
4189public BoundLiteral(SyntaxNode syntax, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors)
4195public BoundLiteral(SyntaxNode syntax, ConstantValue? constantValueOpt, TypeSymbol? type)
4220public BoundUtf8String(SyntaxNode syntax, string value, TypeSymbol type, bool hasErrors)
4230public BoundUtf8String(SyntaxNode syntax, string value, TypeSymbol type)
4260public BoundThisReference(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
4268public BoundThisReference(SyntaxNode syntax, TypeSymbol type)
4295public BoundPreviousSubmissionReference(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
4303public BoundPreviousSubmissionReference(SyntaxNode syntax, TypeSymbol type)
4330public BoundHostObjectMemberReference(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
4338public BoundHostObjectMemberReference(SyntaxNode syntax, TypeSymbol type)
4365public BoundBaseReference(SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
4370public BoundBaseReference(SyntaxNode syntax, TypeSymbol? type)
4394public BoundLocal(SyntaxNode syntax, LocalSymbol localSymbol, BoundLocalDeclarationKind declarationKind, ConstantValue? constantValueOpt, bool isNullableUnknown, TypeSymbol type, bool hasErrors)
4407public BoundLocal(SyntaxNode syntax, LocalSymbol localSymbol, BoundLocalDeclarationKind declarationKind, ConstantValue? constantValueOpt, bool isNullableUnknown, TypeSymbol type)
4443public BoundPseudoVariable(SyntaxNode syntax, LocalSymbol localSymbol, PseudoVariableExpressions emitExpressions, TypeSymbol type, bool hasErrors)
4455public BoundPseudoVariable(SyntaxNode syntax, LocalSymbol localSymbol, PseudoVariableExpressions emitExpressions, TypeSymbol type)
4488public BoundRangeVariable(SyntaxNode syntax, RangeVariableSymbol rangeVariableSymbol, BoundExpression value, TypeSymbol type, bool hasErrors = false)
4521public BoundParameter(SyntaxNode syntax, ParameterSymbol parameterSymbol, TypeSymbol type, bool hasErrors)
4531public BoundParameter(SyntaxNode syntax, ParameterSymbol parameterSymbol, TypeSymbol type)
4561public BoundLabelStatement(SyntaxNode syntax, LabelSymbol label, bool hasErrors)
4570public BoundLabelStatement(SyntaxNode syntax, LabelSymbol label)
4598public BoundGotoStatement(SyntaxNode syntax, LabelSymbol label, BoundExpression? caseExpressionOpt, BoundLabel? labelExpressionOpt, bool hasErrors = false)
4630public BoundLabeledStatement(SyntaxNode syntax, LabelSymbol label, BoundStatement body, bool hasErrors = false)
4661public BoundLabel(SyntaxNode syntax, LabelSymbol label, TypeSymbol? type, bool hasErrors)
4670public BoundLabel(SyntaxNode syntax, LabelSymbol label, TypeSymbol? type)
4698protected BoundStatementList(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
4707public BoundStatementList(SyntaxNode syntax, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
4735public BoundConditionalGoto(SyntaxNode syntax, BoundExpression condition, bool jumpIfTrue, LabelSymbol label, bool hasErrors = false)
4768protected BoundSwitchExpression(BoundKind kind, SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundSwitchExpressionArm> switchArms, BoundDecisionDag reachabilityDecisionDag, LabelSymbol? defaultLabel, bool reportedNotExhaustive, TypeSymbol? type, bool hasErrors = false)
4792public BoundSwitchExpressionArm(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundPattern pattern, BoundExpression? whenClause, BoundExpression value, LabelSymbol label, bool hasErrors = false)
4831public BoundUnconvertedSwitchExpression(SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundSwitchExpressionArm> switchArms, BoundDecisionDag reachabilityDecisionDag, LabelSymbol? defaultLabel, bool reportedNotExhaustive, TypeSymbol? type, bool hasErrors = false)
4859public BoundConvertedSwitchExpression(SyntaxNode syntax, TypeSymbol? naturalTypeOpt, bool wasTargetTyped, BoundExpression expression, ImmutableArray<BoundSwitchExpressionArm> switchArms, BoundDecisionDag reachabilityDecisionDag, LabelSymbol? defaultLabel, bool reportedNotExhaustive, TypeSymbol type, bool hasErrors = false)
4893public BoundDecisionDag(SyntaxNode syntax, BoundDecisionDagNode rootNode, bool hasErrors = false)
4921protected BoundDecisionDagNode(BoundKind kind, SyntaxNode syntax, bool hasErrors)
4926protected BoundDecisionDagNode(BoundKind kind, SyntaxNode syntax)
4935public BoundEvaluationDecisionDagNode(SyntaxNode syntax, BoundDagEvaluation evaluation, BoundDecisionDagNode next, bool hasErrors = false)
4966public BoundTestDecisionDagNode(SyntaxNode syntax, BoundDagTest test, BoundDecisionDagNode whenTrue, BoundDecisionDagNode whenFalse, bool hasErrors = false)
5000public BoundWhenDecisionDagNode(SyntaxNode syntax, ImmutableArray<BoundPatternBinding> bindings, BoundExpression? whenExpression, BoundDecisionDagNode whenTrue, BoundDecisionDagNode? whenFalse, bool hasErrors = false)
5035public BoundLeafDecisionDagNode(SyntaxNode syntax, LabelSymbol label, bool hasErrors)
5044public BoundLeafDecisionDagNode(SyntaxNode syntax, LabelSymbol label)
5072protected BoundDagTest(BoundKind kind, SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false)
5086public BoundDagTemp(SyntaxNode syntax, TypeSymbol type, BoundDagEvaluation? source, int index, bool hasErrors = false)
5118public BoundDagTypeTest(SyntaxNode syntax, TypeSymbol type, BoundDagTemp input, bool hasErrors = false)
5147public BoundDagNonNullTest(SyntaxNode syntax, bool isExplicitTest, BoundDagTemp input, bool hasErrors = false)
5175public BoundDagExplicitNullTest(SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false)
5201public BoundDagValueTest(SyntaxNode syntax, ConstantValue value, BoundDagTemp input, bool hasErrors = false)
5230public BoundDagRelationalTest(SyntaxNode syntax, BinaryOperatorKind operatorKind, ConstantValue value, BoundDagTemp input, bool hasErrors = false)
5261protected BoundDagEvaluation(BoundKind kind, SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false)
5273public BoundDagDeconstructEvaluation(SyntaxNode syntax, MethodSymbol deconstructMethod, BoundDagTemp input, bool hasErrors = false)
5302public BoundDagTypeEvaluation(SyntaxNode syntax, TypeSymbol type, BoundDagTemp input, bool hasErrors = false)
5331public BoundDagFieldEvaluation(SyntaxNode syntax, FieldSymbol field, BoundDagTemp input, bool hasErrors = false)
5360public BoundDagPropertyEvaluation(SyntaxNode syntax, PropertySymbol property, bool isLengthOrCount, BoundDagTemp input, bool hasErrors = false)
5391public BoundDagIndexEvaluation(SyntaxNode syntax, PropertySymbol property, int index, BoundDagTemp input, bool hasErrors = false)
5422public BoundDagIndexerEvaluation(SyntaxNode syntax, TypeSymbol indexerType, BoundDagTemp lengthTemp, int index, BoundExpression indexerAccess, BoundListPatternReceiverPlaceholder receiverPlaceholder, BoundListPatternIndexPlaceholder argumentPlaceholder, BoundDagTemp input, bool hasErrors = false)
5469public BoundDagSliceEvaluation(SyntaxNode syntax, TypeSymbol sliceType, BoundDagTemp lengthTemp, int startIndex, int endIndex, BoundExpression indexerAccess, BoundSlicePatternReceiverPlaceholder receiverPlaceholder, BoundSlicePatternRangePlaceholder argumentPlaceholder, BoundDagTemp input, bool hasErrors = false)
5518public BoundDagAssignmentEvaluation(SyntaxNode syntax, BoundDagTemp target, BoundDagTemp input, bool hasErrors = false)
5547public BoundSwitchSection(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundSwitchLabel> switchLabels, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
5579public BoundSwitchLabel(SyntaxNode syntax, LabelSymbol label, BoundPattern pattern, BoundExpression? whenClause, bool hasErrors = false)
5612protected BoundMethodOrPropertyGroup(BoundKind kind, SyntaxNode syntax, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false)
5626public BoundSequencePointExpression(SyntaxNode syntax, BoundExpression expression, TypeSymbol? type, bool hasErrors = false)
5654public BoundSequence(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundExpression> sideEffects, BoundExpression value, TypeSymbol type, bool hasErrors = false)
5690public BoundSpillSequence(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> sideEffects, BoundExpression value, TypeSymbol type, bool hasErrors = false)
5726public BoundDynamicMemberAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<TypeWithAnnotations> typeArgumentsOpt, string name, bool invoked, bool indexed, TypeSymbol type, bool hasErrors = false)
5765protected BoundDynamicInvocableBase(BoundKind kind, SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol? type, bool hasErrors = false)
5782public BoundDynamicInvocation(SyntaxNode syntax, ImmutableArray<string> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type, bool hasErrors = false)
5818public BoundConditionalAccess(SyntaxNode syntax, BoundExpression receiver, BoundExpression accessExpression, TypeSymbol type, bool hasErrors = false)
5851public BoundLoweredConditionalAccess(SyntaxNode syntax, BoundExpression receiver, MethodSymbol? hasValueMethodOpt, BoundExpression whenNotNull, BoundExpression? whenNullOpt, int id, bool forceCopyOfNullableValueType, TypeSymbol type, bool hasErrors = false)
5892public BoundConditionalReceiver(SyntaxNode syntax, int id, TypeSymbol type, bool hasErrors)
5901public BoundConditionalReceiver(SyntaxNode syntax, int id, TypeSymbol type)
5930public BoundComplexConditionalReceiver(SyntaxNode syntax, BoundExpression valueTypeReceiver, BoundExpression referenceTypeReceiver, TypeSymbol type, bool hasErrors = false)
5963public BoundMethodGroup(SyntaxNode syntax, ImmutableArray<TypeWithAnnotations> typeArgumentsOpt, string name, ImmutableArray<MethodSymbol> methods, Symbol? lookupSymbolOpt, DiagnosticInfo? lookupError, BoundMethodGroupFlags? flags, FunctionTypeSymbol? functionType, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false)
6004public BoundPropertyGroup(SyntaxNode syntax, ImmutableArray<PropertySymbol> properties, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false)
6032public BoundCall(SyntaxNode syntax, BoundExpression? receiverOpt, MethodSymbol method, ImmutableArray<BoundExpression> arguments, ImmutableArray<string> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool isDelegateCall, bool expanded, bool invokedAsExtensionMethod, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalMethodsOpt, TypeSymbol type, bool hasErrors = false)
6085public BoundEventAssignmentOperator(SyntaxNode syntax, EventSymbol @event, bool isAddition, bool isDynamic, BoundExpression? receiverOpt, BoundExpression argument, TypeSymbol type, bool hasErrors = false)
6124public BoundAttribute(SyntaxNode syntax, MethodSymbol? constructor, ImmutableArray<BoundExpression> constructorArguments, ImmutableArray<string?> constructorArgumentNamesOpt, ImmutableArray<int> constructorArgumentsToParamsOpt, bool constructorExpanded, BitVector constructorDefaultArguments, ImmutableArray<BoundAssignmentOperator> namedArguments, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
6169public BoundUnconvertedObjectCreationExpression(SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<(string Name, Location Location)?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, InitializerExpressionSyntax? initializerOpt, Binder binder, bool hasErrors = false)
6207protected BoundObjectCreationExpressionBase(BoundKind kind, SyntaxNode syntax, TypeSymbol type, bool hasErrors)
6215protected BoundObjectCreationExpressionBase(BoundKind kind, SyntaxNode syntax, TypeSymbol type)
6228public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<MethodSymbol> constructorsGroup, ImmutableArray<BoundExpression> arguments, ImmutableArray<string> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
6279protected BoundTupleExpression(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<bool> inferredNamesOpt, TypeSymbol? type, bool hasErrors = false)
6297public BoundTupleLiteral(SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<bool> inferredNamesOpt, TypeSymbol? type, bool hasErrors = false)
6324public BoundConvertedTupleLiteral(SyntaxNode syntax, BoundTupleLiteral? sourceTuple, bool wasTargetTyped, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<bool> inferredNamesOpt, TypeSymbol? type, bool hasErrors = false)
6354public BoundDynamicObjectCreationExpression(SyntaxNode syntax, string name, ImmutableArray<BoundExpression> arguments, ImmutableArray<string> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, ImmutableArray<MethodSymbol> applicableMethods, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
6397public BoundNoPiaObjectCreationExpression(SyntaxNode syntax, string? guidString, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
6429protected BoundObjectInitializerExpressionBase(BoundKind kind, SyntaxNode syntax, BoundObjectOrCollectionValuePlaceholder placeholder, ImmutableArray<BoundExpression> initializers, TypeSymbol type, bool hasErrors = false)
6448public BoundObjectInitializerExpression(SyntaxNode syntax, BoundObjectOrCollectionValuePlaceholder placeholder, ImmutableArray<BoundExpression> initializers, TypeSymbol type, bool hasErrors = false)
6476public BoundObjectInitializerMember(SyntaxNode syntax, Symbol? memberSymbol, ImmutableArray<BoundExpression> arguments, ImmutableArray<string> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, LookupResultKind resultKind, TypeSymbol receiverType, TypeSymbol type, bool hasErrors = false)
6523public BoundDynamicObjectInitializerMember(SyntaxNode syntax, string memberName, TypeSymbol receiverType, TypeSymbol type, bool hasErrors)
6535public BoundDynamicObjectInitializerMember(SyntaxNode syntax, string memberName, TypeSymbol receiverType, TypeSymbol type)
6568public BoundCollectionInitializerExpression(SyntaxNode syntax, BoundObjectOrCollectionValuePlaceholder placeholder, ImmutableArray<BoundExpression> initializers, TypeSymbol type, bool hasErrors = false)
6596public BoundCollectionElementInitializer(SyntaxNode syntax, MethodSymbol addMethod, ImmutableArray<BoundExpression> arguments, BoundExpression? implicitReceiverOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, bool invokedAsExtensionMethod, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
6641public BoundDynamicCollectionElementInitializer(SyntaxNode syntax, ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type, bool hasErrors = false)
6673public BoundImplicitReceiver(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
6681public BoundImplicitReceiver(SyntaxNode syntax, TypeSymbol type)
6708public BoundAnonymousObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<BoundAnonymousPropertyDeclaration> declarations, TypeSymbol type, bool hasErrors = false)
6744public BoundAnonymousPropertyDeclaration(SyntaxNode syntax, PropertySymbol property, TypeSymbol type, bool hasErrors)
6754public BoundAnonymousPropertyDeclaration(SyntaxNode syntax, PropertySymbol property, TypeSymbol type)
6784public BoundNewT(SyntaxNode syntax, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
6814public BoundDelegateCreationExpression(SyntaxNode syntax, BoundExpression argument, MethodSymbol? methodOpt, bool isExtensionMethod, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
6850public BoundArrayCreation(SyntaxNode syntax, ImmutableArray<BoundExpression> bounds, BoundArrayInitialization? initializerOpt, TypeSymbol type, bool hasErrors = false)
6882public BoundArrayInitialization(SyntaxNode syntax, bool isInferred, ImmutableArray<BoundExpression> initializers, bool hasErrors = false)
6913protected BoundStackAllocArrayCreationBase(BoundKind kind, SyntaxNode syntax, TypeSymbol elementType, BoundExpression count, BoundArrayInitialization? initializerOpt, TypeSymbol? type, bool hasErrors = false)
6932public BoundStackAllocArrayCreation(SyntaxNode syntax, TypeSymbol elementType, BoundExpression count, BoundArrayInitialization? initializerOpt, TypeSymbol? type, bool hasErrors = false)
6959public BoundConvertedStackAllocExpression(SyntaxNode syntax, TypeSymbol elementType, BoundExpression count, BoundArrayInitialization? initializerOpt, TypeSymbol type, bool hasErrors = false)
6988public BoundFieldAccess(SyntaxNode syntax, BoundExpression? receiverOpt, FieldSymbol fieldSymbol, ConstantValue? constantValueOpt, LookupResultKind resultKind, bool isByValue, bool isDeclaration, TypeSymbol type, bool hasErrors = false)
7028public BoundHoistedFieldAccess(SyntaxNode syntax, FieldSymbol fieldSymbol, TypeSymbol type, bool hasErrors)
7038public BoundHoistedFieldAccess(SyntaxNode syntax, FieldSymbol fieldSymbol, TypeSymbol type)
7068public BoundPropertyAccess(SyntaxNode syntax, BoundExpression? receiverOpt, PropertySymbol propertySymbol, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
7102public BoundEventAccess(SyntaxNode syntax, BoundExpression? receiverOpt, EventSymbol eventSymbol, bool isUsableAsField, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
7138public BoundIndexerAccess(SyntaxNode syntax, BoundExpression? receiverOpt, PropertySymbol indexer, ImmutableArray<BoundExpression> arguments, ImmutableArray<string> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ImmutableArray<PropertySymbol> originalIndexersOpt, TypeSymbol type, bool hasErrors = false)
7185public BoundImplicitIndexerAccess(SyntaxNode syntax, BoundExpression receiver, BoundExpression argument, BoundExpression lengthOrCountAccess, BoundImplicitIndexerReceiverPlaceholder receiverPlaceholder, BoundExpression indexerOrSliceAccess, ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders, TypeSymbol type, bool hasErrors = false)
7234public BoundDynamicIndexerAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<BoundExpression> arguments, ImmutableArray<string> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<PropertySymbol> applicableIndexers, TypeSymbol type, bool hasErrors = false)
7274public BoundLambda(SyntaxNode syntax, UnboundLambda unboundLambda, LambdaSymbol symbol, BoundBlock body, ImmutableBindingDiagnostic<AssemblySymbol> diagnostics, Binder binder, TypeSymbol? type, bool hasErrors = false)
7314public UnboundLambda(SyntaxNode syntax, UnboundLambdaState data, FunctionTypeSymbol? functionType, Boolean withDependencies, bool hasErrors)
7325public UnboundLambda(SyntaxNode syntax, UnboundLambdaState data, FunctionTypeSymbol? functionType, Boolean withDependencies)
7358public BoundQueryClause(SyntaxNode syntax, BoundExpression value, RangeVariableSymbol? definedSymbol, BoundExpression? operation, BoundExpression? cast, Binder binder, BoundExpression? unoptimizedForm, TypeSymbol type, bool hasErrors = false)
7399public BoundTypeOrInstanceInitializers(SyntaxNode syntax, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
7425public BoundNameOfOperator(SyntaxNode syntax, BoundExpression argument, ConstantValue constantValueOpt, TypeSymbol type, bool hasErrors = false)
7458protected BoundInterpolatedStringBase(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false)
7474public BoundUnconvertedInterpolatedString(SyntaxNode syntax, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false)
7500public BoundInterpolatedString(SyntaxNode syntax, InterpolatedStringHandlerData? interpolationData, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false)
7528public BoundInterpolatedStringHandlerPlaceholder(SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
7533public BoundInterpolatedStringHandlerPlaceholder(SyntaxNode syntax, TypeSymbol? type)
7556public BoundInterpolatedStringArgumentPlaceholder(SyntaxNode syntax, int argumentIndex, TypeSymbol type, bool hasErrors)
7565public BoundInterpolatedStringArgumentPlaceholder(SyntaxNode syntax, int argumentIndex, TypeSymbol type)
7594public BoundStringInsert(SyntaxNode syntax, BoundExpression value, BoundExpression? alignment, BoundLiteral? format, bool isInterpolatedStringHandlerAppendCall, bool hasErrors = false)
7629public BoundIsPatternExpression(SyntaxNode syntax, BoundExpression expression, BoundPattern pattern, bool isNegated, BoundDecisionDag reachabilityDecisionDag, LabelSymbol whenTrueLabel, LabelSymbol whenFalseLabel, TypeSymbol? type, bool hasErrors = false)
7671protected BoundPattern(BoundKind kind, SyntaxNode syntax, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors)
7682protected BoundPattern(BoundKind kind, SyntaxNode syntax, TypeSymbol inputType, TypeSymbol narrowedType)
7699public BoundConstantPattern(SyntaxNode syntax, BoundExpression value, ConstantValue constantValue, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
7732public BoundDiscardPattern(SyntaxNode syntax, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors)
7741public BoundDiscardPattern(SyntaxNode syntax, TypeSymbol inputType, TypeSymbol narrowedType)
7768protected BoundObjectPattern(BoundKind kind, SyntaxNode syntax, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
7785public BoundDeclarationPattern(SyntaxNode syntax, BoundTypeExpression declaredType, bool isVar, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
7817public BoundRecursivePattern(SyntaxNode syntax, BoundTypeExpression? declaredType, MethodSymbol? deconstructMethod, ImmutableArray<BoundPositionalSubpattern> deconstruction, ImmutableArray<BoundPropertySubpattern> properties, bool isExplicitNotNullTest, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
7854public BoundListPattern(SyntaxNode syntax, ImmutableArray<BoundPattern> subpatterns, bool hasSlice, BoundExpression? lengthAccess, BoundExpression? indexerAccess, BoundListPatternReceiverPlaceholder? receiverPlaceholder, BoundListPatternIndexPlaceholder? argumentPlaceholder, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
7898public BoundSlicePattern(SyntaxNode syntax, BoundPattern? pattern, BoundExpression? indexerAccess, BoundSlicePatternReceiverPlaceholder? receiverPlaceholder, BoundSlicePatternRangePlaceholder? argumentPlaceholder, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
7937public BoundITuplePattern(SyntaxNode syntax, MethodSymbol getLengthMethod, MethodSymbol getItemMethod, ImmutableArray<BoundPositionalSubpattern> subpatterns, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
7973protected BoundSubpattern(BoundKind kind, SyntaxNode syntax, BoundPattern pattern, bool hasErrors = false)
7987public BoundPositionalSubpattern(SyntaxNode syntax, Symbol? symbol, BoundPattern pattern, bool hasErrors = false)
8015public BoundPropertySubpattern(SyntaxNode syntax, BoundPropertySubpatternMember? member, bool isLengthOrCount, BoundPattern pattern, bool hasErrors = false)
8045public BoundPropertySubpatternMember(SyntaxNode syntax, BoundPropertySubpatternMember? receiver, Symbol? symbol, TypeSymbol type, bool hasErrors = false)
8077public BoundTypePattern(SyntaxNode syntax, BoundTypeExpression declaredType, bool isExplicitNotNullTest, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8109public BoundBinaryPattern(SyntaxNode syntax, bool disjunction, BoundPattern left, BoundPattern right, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8144public BoundNegatedPattern(SyntaxNode syntax, BoundPattern negated, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8174public BoundRelationalPattern(SyntaxNode syntax, BinaryOperatorKind relation, BoundExpression value, ConstantValue constantValue, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8209public BoundDiscardExpression(SyntaxNode syntax, NullableAnnotation nullableAnnotation, bool isInferred, TypeSymbol? type, bool hasErrors)
8216public BoundDiscardExpression(SyntaxNode syntax, NullableAnnotation nullableAnnotation, bool isInferred, TypeSymbol? type)
8244public BoundThrowExpression(SyntaxNode syntax, BoundExpression expression, TypeSymbol? type, bool hasErrors = false)
8272protected VariablePendingInference(BoundKind kind, SyntaxNode syntax, Symbol variableSymbol, BoundExpression? receiverOpt, bool hasErrors = false)
8289public OutVariablePendingInference(SyntaxNode syntax, Symbol variableSymbol, BoundExpression? receiverOpt, bool hasErrors = false)
8315public DeconstructionVariablePendingInference(SyntaxNode syntax, Symbol variableSymbol, BoundExpression? receiverOpt, bool hasErrors = false)
8341public OutDeconstructVarPendingInference(SyntaxNode syntax, Symbol? variableSymbol, bool isDiscardExpression, bool hasErrors)
8348public OutDeconstructVarPendingInference(SyntaxNode syntax, Symbol? variableSymbol, bool isDiscardExpression)
8376protected BoundMethodBodyBase(BoundKind kind, SyntaxNode syntax, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
8389public BoundNonConstructorMethodBody(SyntaxNode syntax, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
8412public BoundConstructorMethodBody(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundStatement? initializer, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
8442public BoundExpressionWithNullability(SyntaxNode syntax, BoundExpression expression, NullableAnnotation nullableAnnotation, TypeSymbol? type, bool hasErrors = false)
8473public BoundWithExpression(SyntaxNode syntax, BoundExpression receiver, MethodSymbol? cloneMethod, BoundObjectInitializerExpressionBase initializerExpression, TypeSymbol type, bool hasErrors = false)
Lowering\ClosureConversion\ClosureConversion.cs (15)
362var syntax = scopeBoundNode.Syntax;
404var syntax = originalMethod.DeclaringSyntaxReferences[0].GetSyntax();
496private SynthesizedClosureEnvironment GetStaticFrame(BindingDiagnosticBag diagnostics, SyntaxNode syntax)
569private BoundExpression FrameOfType(SyntaxNode syntax, NamedTypeSymbol frameType)
584protected override BoundExpression FramePointer(SyntaxNode syntax, NamedTypeSymbol frameClass)
657SyntaxNode syntax = node.Syntax;
733private void InitVariableProxy(SyntaxNode syntax, Symbol symbol, LocalSymbol framePointer, ArrayBuilder<BoundExpression> prologue)
854SyntaxNode syntax,
996SyntaxNode syntax,
1423private DebugId GetLambdaId(SyntaxNode syntax, ClosureKind closureKind, int closureOrdinal)
1427SyntaxNode lambdaOrLambdaBodySyntax;
1437lambdaOrLambdaBodySyntax = (SyntaxNode)localFunction.Body ?? localFunction.ExpressionBody?.Expression;
1737private static bool InLoopOrLambda(SyntaxNode lambdaSyntax, SyntaxNode scopeSyntax)
1739var curSyntax = lambdaSyntax.Parent;
Lowering\Instrumentation\CodeCoverageInstrumenter.cs (15)
128SyntaxNode syntax = MethodDeclarationIfAvailable(methodBody.Syntax);
167SyntaxNode methodBodySyntax,
476private static Cci.DebugSourceDocument GetSourceDocument(DebugDocumentProvider debugDocumentProvider, SyntaxNode syntax)
481private static Cci.DebugSourceDocument GetSourceDocument(DebugDocumentProvider debugDocumentProvider, SyntaxNode syntax, FileLinePositionSpan span)
493private BoundStatement AddAnalysisPoint(SyntaxNode syntaxForSpan, Text.TextSpan alternateSpan, SyntheticBoundNodeFactory statementFactory)
498private BoundStatement AddAnalysisPoint(SyntaxNode syntaxForSpan, SyntheticBoundNodeFactory statementFactory)
503private BoundStatement AddAnalysisPoint(SyntaxNode syntaxForSpan, FileLinePositionSpan span, SyntheticBoundNodeFactory statementFactory)
523private static SyntaxNode SyntaxForSpan(BoundStatement statement)
525SyntaxNode syntaxForSpan;
564private static MethodSymbol GetCreatePayloadOverload(CSharpCompilation compilation, WellKnownMember overload, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
569private static SyntaxNode MethodDeclarationIfAvailable(SyntaxNode body)
571SyntaxNode? parent = body.Parent;
593private static TextSpan SkipAttributes(SyntaxNode syntax)
623private static TextSpan SkipAttributes(SyntaxNode syntax, SyntaxList<AttributeListSyntax> attributes, SyntaxTokenList modifiers, SyntaxToken keyword, TypeSyntax? type)
Lowering\LocalRewriter\LocalRewriter.cs (11)
511private static BoundExpression BadExpression(SyntaxNode syntax, TypeSymbol resultType, BoundExpression child)
516private static BoundExpression BadExpression(SyntaxNode syntax, TypeSymbol resultType, BoundExpression child1, BoundExpression child2)
521private static BoundExpression BadExpression(SyntaxNode syntax, TypeSymbol resultType, ImmutableArray<BoundExpression> children)
526private bool TryGetWellKnownTypeMember<TSymbol>(SyntaxNode? syntax, WellKnownMember member, out TSymbol symbol, bool isOptional = false, Location? location = null) where TSymbol : Symbol
536/// Recommendation: Do not use, use <see cref="TryGetSpecialTypeMethod(SyntaxNode, SpecialMember, out MethodSymbol)"/> instead!
539private MethodSymbol UnsafeGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember)
546/// Recommendation: Do not use, use <see cref="TryGetSpecialTypeMethod(SyntaxNode, SpecialMember, CSharpCompilation, BindingDiagnosticBag, out MethodSymbol)"/> instead!
549private static MethodSymbol UnsafeGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember, CSharpCompilation compilation, BindingDiagnosticBag diagnostics)
566private bool TryGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember, out MethodSymbol method)
571private static bool TryGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember, CSharpCompilation compilation, BindingDiagnosticBag diagnostics, out MethodSymbol method)
740var syntax = initializer.Syntax;
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.ValueDispatchNode.cs (7)
28public readonly SyntaxNode Syntax;
30public ValueDispatchNode(SyntaxNode syntax) => Syntax = syntax;
40public SwitchDispatch(SyntaxNode syntax, ImmutableArray<(ConstantValue value, LabelSymbol label)> dispatches, LabelSymbol otherwise) : base(syntax)
54public LeafDispatchNode(SyntaxNode syntax, LabelSymbol Label) : base(syntax) => this.Label = Label;
86private RelationalDispatch(SyntaxNode syntax, ConstantValue value, BinaryOperatorKind op, ValueDispatchNode left, ValueDispatchNode right) : base(syntax)
133public static ValueDispatchNode CreateBalanced(SyntaxNode syntax, ConstantValue value, BinaryOperatorKind op, ValueDispatchNode whenTrue, ValueDispatchNode whenFalse)
140private static ValueDispatchNode CreateBalancedCore(SyntaxNode syntax, ConstantValue value, BinaryOperatorKind op, ValueDispatchNode left, ValueDispatchNode right)
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (6)
30public PatternLocalRewriter(SyntaxNode node, LocalRewriter localRewriter, bool generateInstrumentation)
58private readonly SyntaxNode _node;
62public DagTempAllocator(SyntheticBoundNodeFactory factory, SyntaxNode node, bool generateSequencePoints)
367private BoundExpression MakeNullCheck(SyntaxNode syntax, BoundExpression rewrittenExpr, BinaryOperatorKind operatorKind)
387protected BoundExpression MakeValueTest(SyntaxNode syntax, BoundExpression input, ConstantValue value)
401protected BoundExpression MakeRelationalTest(SyntaxNode syntax, BoundExpression input, BinaryOperatorKind operatorKind, ConstantValue value)
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (36)
70var syntax = node.Syntax;
173SyntaxNode syntax,
189SyntaxNode syntax,
535private BoundExpression RewriteLiftedBinaryOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, BoundExpression loweredRight, TypeSymbol type, MethodSymbol? method, TypeSymbol? constrainedToTypeOpt)
594SyntaxNode syntax,
723private BoundExpression MakeTruthTestForDynamicLogicalOperator(SyntaxNode syntax, BoundExpression loweredLeft, TypeSymbol boolean, MethodSymbol? leftTruthOperator, TypeSymbol? constrainedToTypeOpt, bool negative)
761SyntaxNode syntax,
783SyntaxNode syntax,
875private BoundExpression MakeOptimizedGetValueOrDefault(SyntaxNode syntax, BoundExpression expression)
889private BoundExpression MakeBooleanConstant(SyntaxNode syntax, bool value)
894private BoundExpression MakeOptimizedHasValue(SyntaxNode syntax, BoundExpression expression)
908private BoundExpression MakeNullableHasValue(SyntaxNode syntax, BoundExpression expression)
915SyntaxNode syntax,
1054SyntaxNode syntax,
1213SyntaxNode syntax,
1253SyntaxNode syntax,
1279SyntaxNode syntax,
1322SyntaxNode syntax,
1424SyntaxNode syntax,
1559private BoundExpression MakeNewNullableBoolean(SyntaxNode syntax, bool? value)
1576SyntaxNode syntax,
1661SyntaxNode syntax,
1722SyntaxNode syntax,
1814private MethodSymbol UnsafeGetNullableMethod(SyntaxNode syntax, TypeSymbol nullableType, SpecialMember member)
1824internal static MethodSymbol UnsafeGetNullableMethod(SyntaxNode syntax, TypeSymbol nullableType, SpecialMember member, CSharpCompilation compilation, BindingDiagnosticBag diagnostics)
1831private bool TryGetNullableMethod(SyntaxNode syntax, TypeSymbol nullableType, SpecialMember member, out MethodSymbol result)
1844SyntaxNode syntax,
1915private BoundExpression RewriteStringEquality(BoundBinaryOperator? oldNode, SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, BoundExpression loweredRight, TypeSymbol type, SpecialMember member)
1928private BoundExpression RewriteDelegateOperation(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, BoundExpression loweredRight, TypeSymbol type, SpecialMember member)
1958private BoundExpression RewriteDecimalBinaryOperation(SyntaxNode syntax, BoundExpression loweredLeft, BoundExpression loweredRight, BinaryOperatorKind operatorKind)
1989private BoundExpression MakeNullCheck(SyntaxNode syntax, BoundExpression rewrittenExpr, BinaryOperatorKind operatorKind)
2048SyntaxNode syntax,
2055SyntaxNode rightSyntax = loweredRight.Syntax;
2110SyntaxNode syntax,
2133var oldSyntax = _factory.Syntax;
2170SyntaxNode syntax,
Lowering\LocalRewriter\LocalRewriter_Call.cs (11)
98private void EmbedIfNeedTo(BoundExpression receiver, ImmutableArray<MethodSymbol> methods, SyntaxNode syntaxNode)
117private void EmbedIfNeedTo(BoundExpression receiver, ImmutableArray<PropertySymbol> properties, SyntaxNode syntaxNode)
178SyntaxNode syntax,
206SyntaxNode syntax,
287private BoundExpression MakeCall(SyntaxNode syntax, BoundExpression? rewrittenReceiver, MethodSymbol method, ImmutableArray<BoundExpression> rewrittenArguments, TypeSymbol type)
756SyntaxNode syntax,
949SyntaxNode syntax,
1143SyntaxNode syntax,
1245SyntaxNode syntax,
1313private static BoundExpression CreateParamArrayArgument(SyntaxNode syntax,
1334private static BoundExpression MakeLiteral(SyntaxNode syntax, ConstantValue constantValue, TypeSymbol type, LocalRewriter? localRewriter)
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (21)
92var save_Syntax = _factory.Syntax;
135private BoundArrayCreation MakeUnderlyingArrayForUtf8Span(SyntaxNode syntax, ArrayTypeSymbol byteArray, IReadOnlyList<byte> bytes, out int length)
257SyntaxNode syntax,
292SyntaxNode syntax,
559var oldSyntax = _factory.Syntax;
695SyntaxNode syntax,
805SyntaxNode syntax,
892SyntaxNode syntax,
948SyntaxNode syntax,
1000SyntaxNode syntax,
1062SyntaxNode syntax,
1089SyntaxNode syntax,
1129SyntaxNode syntax,
1191SyntaxNode syntax,
1240SyntaxNode syntax,
1323SyntaxNode syntax,
1542private BoundExpression RewriteDecimalConversion(SyntaxNode syntax, BoundExpression operand, TypeSymbol fromType, TypeSymbol toType, bool @checked, bool isImplicit, ConstantValue? constantValueOpt)
1573private BoundExpression RewriteDecimalConversionCore(SyntaxNode syntax, BoundExpression operand, TypeSymbol fromType, TypeSymbol toType, bool isImplicit, ConstantValue? constantValueOpt)
1599private Conversion TryMakeConversion(SyntaxNode syntax, Conversion conversion, TypeSymbol fromType, TypeSymbol toType, bool @checked)
1700private Conversion TryMakeConversion(SyntaxNode syntax, TypeSymbol fromType, TypeSymbol toType, bool @checked)
1711private Conversion TryMakeUserDefinedConversion(SyntaxNode syntax, MethodSymbol meth, TypeSymbol fromType, TypeSymbol toType, bool @checked, bool isImplicit)
Lowering\LocalRewriter\LocalRewriter_StringConcat.cs (7)
36private BoundExpression RewriteStringConcatenation(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, BoundExpression loweredRight, TypeSymbol type)
300private BoundExpression RewriteStringConcatenationTwoExprs(SyntaxNode syntax, BoundExpression loweredLeft, BoundExpression loweredRight)
311private BoundExpression RewriteStringConcatenationThreeExprs(SyntaxNode syntax, BoundExpression loweredFirst, BoundExpression loweredSecond, BoundExpression loweredThird)
323private BoundExpression RewriteStringConcatenationFourExprs(SyntaxNode syntax, BoundExpression loweredFirst, BoundExpression loweredSecond, BoundExpression loweredThird, BoundExpression loweredFourth)
336private BoundExpression RewriteStringConcatenationManyExprs(SyntaxNode syntax, ImmutableArray<BoundExpression> loweredArgs)
353private BoundExpression RewriteStringConcatInExpressionLambda(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, BoundExpression loweredRight, TypeSymbol type)
369private BoundExpression ConvertConcatExprToString(SyntaxNode syntax, BoundExpression expr)
Lowering\LocalRewriter\LocalRewriter_UnaryOperator.cs (11)
64SyntaxNode syntax,
76SyntaxNode syntax,
175SyntaxNode syntax,
239SyntaxNode syntax,
348private BoundExpression GetLiftedUnaryOperatorConsequence(UnaryOperatorKind kind, SyntaxNode syntax, MethodSymbol? method, TypeSymbol? constrainedToTypeOpt, TypeSymbol type, BoundExpression nonNullOperand)
429SyntaxNode syntax = node.Syntax;
503SyntaxNode syntax,
530SyntaxNode syntax,
631SyntaxNode syntax = node.Syntax;
807private BoundExpression MakeDecimalIncDecOperator(SyntaxNode syntax, BinaryOperatorKind oper, BoundExpression operand)
814private BoundExpression MakeLiftedDecimalIncDecOperator(SyntaxNode syntax, BinaryOperatorKind oper, BoundExpression operand)
Lowering\SyntheticBoundNodeFactory.cs (16)
43public SyntaxNode Syntax { get; set; }
99SyntaxNode node,
150public SyntheticBoundNodeFactory(MethodSymbol topLevelMethod, SyntaxNode node, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics, InstrumentationState? instrumentationState = null)
161public SyntheticBoundNodeFactory(MethodSymbol? topLevelMethodOpt, NamedTypeSymbol? currentClassOpt, SyntaxNode node, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics, InstrumentationState? instrumentationState = null)
447public BoundExpression AssignmentExpression(SyntaxNode syntax, BoundExpression left, BoundExpression right, TypeSymbol type, bool isRef = false, bool hasErrors = false, bool wasCompilerGenerated = false)
551SyntaxNode? syntax = null,
573SyntaxNode syntax
1129public BoundStatement SequencePoint(SyntaxNode syntax, BoundStatement statement)
1166public static BoundExpression Null(TypeSymbol type, SyntaxNode syntax)
1446internal static BoundExpression Default(TypeSymbol type, SyntaxNode syntax)
1491internal static BoundExpression NullOrDefault(TypeSymbol typeSymbol, SyntaxNode syntax)
1512SyntaxNode? syntaxOpt = null
1551var syntax = argument.Syntax;
1617internal BoundExpression MakeNullCheck(SyntaxNode syntax, BoundExpression rewrittenExpr, BinaryOperatorKind operatorKind)
1669internal BoundExpression MakeNullableHasValue(SyntaxNode syntax, BoundExpression expression)
1676SyntaxNode syntax,
Symbols\Source\ParameterHelpers.cs (4)
947internal static ImmutableArray<CustomModifier> ConditionallyCreateInModifiers(RefKind refKind, bool addRefReadOnlyModifier, Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
959internal static ImmutableArray<CustomModifier> CreateInModifiers(Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
964internal static ImmutableArray<CustomModifier> CreateOutModifiers(Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
969private static ImmutableArray<CustomModifier> CreateModifiers(WellKnownType modifier, Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
Symbols\TypeWithAnnotations.cs (5)
511public void ReportDiagnosticsIfObsolete(Binder binder, SyntaxNode syntax, BindingDiagnosticBag diagnostics) =>
519private void ReportDiagnosticsIfObsoleteCore(Binder binder, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
851internal abstract void ReportDiagnosticsIfObsolete(TypeWithAnnotations type, Binder binder, SyntaxNode syntax, BindingDiagnosticBag diagnostics);
912internal override void ReportDiagnosticsIfObsolete(TypeWithAnnotations type, Binder binder, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
1041internal override void ReportDiagnosticsIfObsolete(TypeWithAnnotations type, Binder binder, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
Syntax\CSharpSyntaxNode.cs (22)
27internal CSharpSyntaxNode(GreenNode green, SyntaxNode? parent, int position)
185public static SyntaxNode DeserializeFrom(Stream stream, CancellationToken cancellationToken = default)
254if (child.AsNode(out var node))
294if (child.AsNode(out var node))
469protected override bool EquivalentToCore(SyntaxNode other)
482protected internal override SyntaxNode ReplaceCore<TNode>(
484Func<TNode, TNode, SyntaxNode>? computeReplacementNode = null,
493protected internal override SyntaxNode ReplaceNodeInListCore(SyntaxNode originalNode, IEnumerable<SyntaxNode> replacementNodes)
498protected internal override SyntaxNode InsertNodesInListCore(SyntaxNode nodeInList, IEnumerable<SyntaxNode> nodesToInsert, bool insertBefore)
503protected internal override SyntaxNode ReplaceTokenInListCore(SyntaxToken originalToken, IEnumerable<SyntaxToken> newTokens)
508protected internal override SyntaxNode InsertTokensInListCore(SyntaxToken originalToken, IEnumerable<SyntaxToken> newTokens, bool insertBefore)
513protected internal override SyntaxNode ReplaceTriviaInListCore(SyntaxTrivia originalTrivia, IEnumerable<SyntaxTrivia> newTrivia)
518protected internal override SyntaxNode InsertTriviaInListCore(SyntaxTrivia originalTrivia, IEnumerable<SyntaxTrivia> newTrivia, bool insertBefore)
523protected internal override SyntaxNode? RemoveNodesCore(IEnumerable<SyntaxNode> nodes, SyntaxRemoveOptions options)
528protected internal override SyntaxNode NormalizeWhitespaceCore(string indentation, string eol, bool elasticTrivia)
533protected override bool IsEquivalentToCore(SyntaxNode node, bool topLevel = false)
570if (nodeOrToken.AsNode(out var node)
Syntax\SyntaxFactory.cs (19)
1227public static SyntaxList<TNode> List<TNode>() where TNode : SyntaxNode
1238public static SyntaxList<TNode> SingletonList<TNode>(TNode node) where TNode : SyntaxNode
1248public static SyntaxList<TNode> List<TNode>(IEnumerable<TNode> nodes) where TNode : SyntaxNode
1332public static SeparatedSyntaxList<TNode> SeparatedList<TNode>() where TNode : SyntaxNode
1342public static SeparatedSyntaxList<TNode> SingletonSeparatedList<TNode>(TNode node) where TNode : SyntaxNode
1352public static SeparatedSyntaxList<TNode> SeparatedList<TNode>(IEnumerable<TNode>? nodes) where TNode : SyntaxNode
1404public static SeparatedSyntaxList<TNode> SeparatedList<TNode>(IEnumerable<TNode>? nodes, IEnumerable<SyntaxToken>? separators) where TNode : SyntaxNode
1452public static SeparatedSyntaxList<TNode> SeparatedList<TNode>(IEnumerable<SyntaxNodeOrToken> nodesAndTokens) where TNode : SyntaxNode
1463public static SeparatedSyntaxList<TNode> SeparatedList<TNode>(SyntaxNodeOrTokenList nodesAndTokens) where TNode : SyntaxNode
1546public static SyntaxTree SyntaxTree(SyntaxNode root, ParseOptions? options = null, string path = "", Encoding? encoding = null)
1647/// Since this API does not create a <see cref="SyntaxNode"/> that owns all produced tokens,
1951public static bool AreEquivalent(SyntaxNode? oldNode, SyntaxNode? newNode, bool topLevel)
1965public static bool AreEquivalent(SyntaxNode? oldNode, SyntaxNode? newNode, Func<SyntaxKind, bool>? ignoreChildNode = null)
2016where TNode : SyntaxNode
2032where TNode : SyntaxNode
2047where TNode : SyntaxNode
2336var lastNode = compilation.ChildNodes().LastOrDefault();
Syntax\SyntaxReplacer.cs (44)
17internal static SyntaxNode Replace<TNode>(
18SyntaxNode root,
20Func<TNode, TNode, SyntaxNode>? computeReplacementNode = null,
25where TNode : SyntaxNode
44IEnumerable<SyntaxNode>? nodes = null,
45Func<SyntaxNode, SyntaxNode, SyntaxNode>? computeReplacementNode = null,
51var replacer = new Replacer<SyntaxNode>(
66private class Replacer<TNode> : CSharpSyntaxRewriter where TNode : SyntaxNode
68private readonly Func<TNode, TNode, SyntaxNode>? _computeReplacementNode;
72private readonly HashSet<SyntaxNode> _nodeSet;
83Func<TNode, TNode, SyntaxNode>? computeReplacementNode,
93_nodeSet = nodes != null ? new HashSet<SyntaxNode>(nodes) : s_noNodes;
112private static readonly HashSet<SyntaxNode> s_noNodes = new HashSet<SyntaxNode>();
180public override SyntaxNode? Visit(SyntaxNode? node)
182SyntaxNode? rewritten = node;
235internal static SyntaxNode ReplaceNodeInList(SyntaxNode root, SyntaxNode originalNode, IEnumerable<SyntaxNode> newNodes)
240internal static SyntaxNode InsertNodeInList(SyntaxNode root, SyntaxNode nodeInList, IEnumerable<SyntaxNode> nodesToInsert, bool insertBefore)
245public static SyntaxNode ReplaceTokenInList(SyntaxNode root, SyntaxToken tokenInList, IEnumerable<SyntaxToken> newTokens)
250public static SyntaxNode InsertTokenInList(SyntaxNode root, SyntaxToken tokenInList, IEnumerable<SyntaxToken> newTokens, bool insertBefore)
255public static SyntaxNode ReplaceTriviaInList(SyntaxNode root, SyntaxTrivia triviaInList, IEnumerable<SyntaxTrivia> newTrivia)
260public static SyntaxNode InsertTriviaInList(SyntaxNode root, SyntaxTrivia triviaInList, IEnumerable<SyntaxTrivia> newTrivia, bool insertBefore)
328public override SyntaxNode? Visit(SyntaxNode? node)
330SyntaxNode? rewritten = node;
370private readonly SyntaxNode _originalNode;
371private readonly IEnumerable<SyntaxNode> _newNodes;
374SyntaxNode originalNode,
375IEnumerable<SyntaxNode> replacementNodes,
384public override SyntaxNode? Visit(SyntaxNode? node)
AbstractAssignOutParametersCodeFixProvider.cs (25)
33var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
47protected abstract void TryRegisterFix(CodeFixContext context, Document document, SyntaxNode container, SyntaxNode location);
49private static (SyntaxNode container, SyntaxNode exprOrStatement) GetContainer(SyntaxNode root, TextSpan span)
51var location = root.FindNode(span);
54var container = GetContainer(location);
64private static bool IsValidLocation(SyntaxNode location)
81private static SyntaxNode? GetContainer(SyntaxNode node)
83for (var current = node; current != null; current = current.Parent)
95private static async Task<MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>> GetUnassignedParametersAsync(
98var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
105var result = new MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>();
108var container = group.Key;
119foreach (var exprOrStatement in distinctExprsOrStatements)
142foreach (var container in unassignedParameters.Keys.OrderByDescending(n => n.Span.Start))
150SyntaxEditor editor, SyntaxNode container,
151MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
154protected static ImmutableArray<SyntaxNode> GenerateAssignmentStatements(
157var result = ArrayBuilder<SyntaxNode>.GetInstance();
AssignOutParametersAboveReturnCodeFixProvider.cs (8)
30protected override void TryRegisterFix(CodeFixContext context, Document document, SyntaxNode container, SyntaxNode location)
36SyntaxEditor editor, SyntaxNode container,
37MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
48SyntaxEditor editor, SyntaxNode exprOrStatement, ImmutableArray<SyntaxNode> statements)
60var parent = exprOrStatement.GetRequiredParent();
CSharpAddImportsService.cs (28)
40protected override ImmutableArray<SyntaxNode> GetGlobalImports(Compilation compilation, SyntaxGenerator generator)
41=> ImmutableArray<SyntaxNode>.Empty;
43protected override SyntaxNode? GetAlias(UsingDirectiveSyntax usingOrAlias)
49protected override SyntaxNode Rewrite(
54SyntaxNode externContainer,
55SyntaxNode usingContainer,
56SyntaxNode staticUsingContainer,
57SyntaxNode aliasContainer,
59SyntaxNode root,
67var newRoot = rewriter.Visit(root);
71protected override SyntaxList<UsingDirectiveSyntax> GetUsingsAndAliases(SyntaxNode node)
79protected override SyntaxList<ExternAliasDirectiveSyntax> GetExterns(SyntaxNode node)
87protected override bool IsEquivalentImport(SyntaxNode a, SyntaxNode b)
94private readonly SyntaxNode _externContainer;
95private readonly SyntaxNode _usingContainer;
96private readonly SyntaxNode _aliasContainer;
97private readonly SyntaxNode _staticUsingContainer;
108SyntaxNode externContainer,
109SyntaxNode usingContainer,
110SyntaxNode aliasContainer,
111SyntaxNode staticUsingContainer,
128public override SyntaxNode? Visit(SyntaxNode? node)
131public override SyntaxNode VisitNamespaceDeclaration(NamespaceDeclarationSyntax node)
134public override SyntaxNode? VisitFileScopedNamespaceDeclaration(FileScopedNamespaceDeclarationSyntax node)
137private SyntaxNode VisitBaseNamespaceDeclaration(
171public override SyntaxNode VisitCompilationUnit(CompilationUnitSyntax node)
CSharpCodeGenerationService.cs (23)
42public override CodeGenerationDestination GetDestination(SyntaxNode node)
45protected override IComparer<SyntaxNode> GetMemberComparer()
48protected override IList<bool>? GetAvailableInsertionIndices(SyntaxNode destination, CancellationToken cancellationToken)
313var finalMember = editor.GetChangedRoot();
343protected override TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> members)
377var attributeSyntaxToRemove = attributeToRemove.ApplicationSyntaxReference.GetSyntax(cancellationToken);
383SyntaxNode attributeToRemove,
443SyntaxNode attributeToRemove,
479IEnumerable<SyntaxNode> statements,
531IEnumerable<SyntaxNode> statements,
533CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
570TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, BaseMethodDeclarationSyntax baseMethodDeclaration) where TDeclarationNode : SyntaxNode
591TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, LocalFunctionStatementSyntax localFunctionStatement) where TDeclarationNode : SyntaxNode
612TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, AnonymousFunctionExpressionSyntax anonymousFunctionSyntax) where TDeclarationNode : SyntaxNode
636public override SyntaxNode CreateEventDeclaration(
642public override SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CSharpCodeGenerationContextInfo info, CancellationToken cancellationToken)
650public override SyntaxNode? CreateMethodDeclaration(
699public override SyntaxNode CreatePropertyDeclaration(
706public override SyntaxNode CreateNamedTypeDeclaration(
712public override SyntaxNode CreateNamespaceDeclaration(
CSharpDeclareAsNullableCodeFixProvider.cs (12)
52var node = context.Diagnostics.First().Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
61private static string GetEquivalenceKey(SyntaxNode node, SemanticModel model)
69static bool IsRemoteApiUsage(SyntaxNode node, SemanticModel model)
110var node = diagnostic.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
117var node = diagnostic.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
122SyntaxEditor editor, SemanticModel model, SyntaxNode node, HashSet<TypeSyntax> alreadyHandled, CancellationToken cancellationToken)
133SemanticModel model, SyntaxNode node, CancellationToken cancellationToken)
140var containingMember = node.GetAncestors().FirstOrDefault(
195var syntax = local.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
206var syntax = field.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
223var syntax = property.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
333private static bool IsExpressionSupported(SyntaxNode node)
CSharpInlineDeclarationCodeFixProvider.cs (13)
68var originalRoot = editor.OriginalRoot;
77using var _ = ArrayBuilder<SyntaxNode>.GetInstance(capacity: 2, out var additionalNodesToTrack);
91private static (VariableDeclaratorSyntax declarator, IdentifierNameSyntax identifier, SyntaxNode invocationOrCreation) FindDiagnosticNodes(
107private static SyntaxNode ReplaceIdentifierWithInlineDeclaration(
110SyntaxNode currentRoot, VariableDeclaratorSyntax declarator,
111IdentifierNameSyntax identifier, SyntaxNode currentNode,
337SyntaxNode nodeToReplace,
353var topmostContainer = GetTopmostContainer(nodeToReplace);
362var updatedTopmostContainer = topmostContainer.ReplaceNode(
373var updatedInvocationOrCreation = updatedTopmostContainer.GetAnnotatedNodes(annotation).Single();
386private static SyntaxNode GetTopmostContainer(SyntaxNode expression)
397int position, SyntaxNode topmostContainer,
CSharpSyntaxGeneratorInternal.cs (68)
36public override SyntaxNode LocalDeclarationStatement(SyntaxNode? type, SyntaxToken name, SyntaxNode? initializer, bool isConst)
43public override SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer)
46public override SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value)
49internal static VariableDeclarationSyntax VariableDeclaration(SyntaxNode? type, SyntaxToken name, SyntaxNode? expression)
62public override SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull)
65public override SyntaxNode MemberBindingExpression(SyntaxNode name)
68public override SyntaxNode RefExpression(SyntaxNode expression)
71public override SyntaxNode AddParentheses(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
74internal static SyntaxNode Parenthesize(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
82public override SyntaxNode YieldReturnStatement(SyntaxNode expression)
91public override SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken)
94public override SyntaxNode InterpolatedStringText(SyntaxToken textToken)
104public override SyntaxNode Interpolation(SyntaxNode syntaxNode)
107public override SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment)
110public override SyntaxNode InterpolationFormatClause(string format)
115public override SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames)
134public override SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext)
137public override SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right)
145public override SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type)
153public override SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isKeyword, SyntaxNode pattern)
159public override SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right)
162public override SyntaxNode ConstantPattern(SyntaxNode expression)
165public override SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name)
170public override SyntaxNode LessThanRelationalPattern(SyntaxNode expression)
173public override SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression)
176public override SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression)
179public override SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression)
182public override SyntaxNode NotPattern(SyntaxNode pattern)
185public override SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right)
188public override SyntaxNode ParenthesizedPattern(SyntaxNode pattern)
191public override SyntaxNode TypePattern(SyntaxNode type)
194public override SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern)
UseExplicitTypeCodeFixProvider.cs (9)
47var root = editor.OriginalRoot;
51var node = root.FindNode(diagnostic.Location.SourceSpan, getInnermostNodeForTie: true);
58SyntaxNode node, CancellationToken cancellationToken)
60var declarationContext = node.Parent;
131private static async Task UpdateTypeSyntaxAsync(Document document, SyntaxEditor editor, TypeSyntax typeSyntax, SyntaxNode declarationSyntax, CancellationToken cancellationToken)
150SyntaxNode declarationSyntax,
174using var _ = ArrayBuilder<SyntaxNode>.GetInstance(elements.Length, out var builder);
210private static SyntaxNode GenerateTypeDeclaration(TypeSyntax typeSyntax, ITypeSymbol newTypeSymbol)
221private static ITypeSymbol GetConvertedType(SemanticModel semanticModel, SyntaxNode typeSyntax, CancellationToken cancellationToken)
AbstractAssignOutParametersCodeFixProvider.cs (25)
33var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
47protected abstract void TryRegisterFix(CodeFixContext context, Document document, SyntaxNode container, SyntaxNode location);
49private static (SyntaxNode container, SyntaxNode exprOrStatement) GetContainer(SyntaxNode root, TextSpan span)
51var location = root.FindNode(span);
54var container = GetContainer(location);
64private static bool IsValidLocation(SyntaxNode location)
81private static SyntaxNode? GetContainer(SyntaxNode node)
83for (var current = node; current != null; current = current.Parent)
95private static async Task<MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>> GetUnassignedParametersAsync(
98var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
105var result = new MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>();
108var container = group.Key;
119foreach (var exprOrStatement in distinctExprsOrStatements)
142foreach (var container in unassignedParameters.Keys.OrderByDescending(n => n.Span.Start))
150SyntaxEditor editor, SyntaxNode container,
151MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
154protected static ImmutableArray<SyntaxNode> GenerateAssignmentStatements(
157var result = ArrayBuilder<SyntaxNode>.GetInstance();
AddImport\CSharpAddImportFeatureService.cs (29)
43protected override bool CanAddImport(SyntaxNode node, bool allowInHiddenRegions, CancellationToken cancellationToken)
50string diagnosticId, ISyntaxFacts syntaxFacts, SyntaxNode node, out SimpleNameSyntax nameNode)
144protected override bool CanAddImportForDeconstruct(string diagnosticId, SyntaxNode node)
147protected override bool CanAddImportForGetAwaiter(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node)
153protected override bool CanAddImportForGetEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node)
156protected override bool CanAddImportForGetAsyncEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node)
159protected override bool CanAddImportForNamespace(string diagnosticId, SyntaxNode node, out SimpleNameSyntax nameNode)
165protected override bool CanAddImportForQuery(string diagnosticId, SyntaxNode node)
170protected override bool CanAddImportForType(string diagnosticId, SyntaxNode node, out SimpleNameSyntax nameNode)
205private static bool TryFindStandaloneType(SyntaxNode node, out SimpleNameSyntax nameNode)
234SyntaxNode node,
241SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
248SyntaxNode node,
295SyntaxNode contextNode,
341SyntaxNode contextNode,
353Document document, CompilationUnitSyntax root, SyntaxNode contextNode, INamespaceOrTypeSymbol namespaceOrTypeSymbol,
364using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var newImports);
383var newRoot = addImportService.AddImports(
389SyntaxNode contextNode, IReadOnlyList<string> namespaceParts,
400var newRoot = service.AddImport(
423SyntaxNode contextNode)
442SyntaxNode contextNode)
457var container = addImportService.GetImportContainer(root, contextNode, dummyUsing, options);
560SyntaxNode contextNode)
586private static bool HasExistingExternAlias(string alias, SyntaxNode contextNode)
601SyntaxNode contextNode, CancellationToken cancellationToken)
606protected override bool IsViableExtensionMethod(IMethodSymbol method, SyntaxNode expression, SemanticModel semanticModel, ISyntaxFacts syntaxFacts, CancellationToken cancellationToken)
608var leftExpression = syntaxFacts.IsMemberAccessExpression(expression)
629protected override bool IsAddMethodContext(SyntaxNode node, SemanticModel semanticModel)
AssignOutParametersAboveReturnCodeFixProvider.cs (8)
30protected override void TryRegisterFix(CodeFixContext context, Document document, SyntaxNode container, SyntaxNode location)
36SyntaxEditor editor, SyntaxNode container,
37MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
48SyntaxEditor editor, SyntaxNode exprOrStatement, ImmutableArray<SyntaxNode> statements)
60var parent = exprOrStatement.GetRequiredParent();
ChangeSignature\CSharpChangeSignatureService.cs (39)
109var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
125var matchingNode = GetMatchingNode(token.Parent, restrictToDeclarations);
177private static int TryGetSelectedIndexFromDeclaration(int position, SyntaxNode matchingNode)
183private static SyntaxNode? GetMatchingNode(SyntaxNode node, bool restrictToDeclarations)
189for (var current = node; current != null; current = current.Parent)
206private static bool InSymbolHeader(SyntaxNode matchingNode, int position)
209var lastAttributes = matchingNode.ChildNodes().LastOrDefault(n => n is AttributeListSyntax);
219var parameterList = matchingNode.ChildNodes().LastOrDefault(n => n is ParameterListSyntax);
229public override SyntaxNode? FindNodeToUpdate(Document document, SyntaxNode node)
237var matchingNode = node.AncestorsAndSelf().FirstOrDefault(n => _updatableAncestorKinds.Contains(n.Kind()));
243var nodeContainingOriginal = GetNodeContainingTargetNode(matchingNode);
252private static SyntaxNode? GetNodeContainingTargetNode(SyntaxNode matchingNode)
279public override async Task<SyntaxNode> ChangeSignatureAsync(
282SyntaxNode potentiallyUpdatedNode,
283SyntaxNode originalNode,
571private static bool IsParamsArrayExpanded(SemanticModel semanticModel, SyntaxNode node, SymbolInfo symbolInfo, CancellationToken cancellationToken)
658Func<AddedParameter, T> createNewParameterMethod) where T : SyntaxNode
664protected override T TransferLeadingWhitespaceTrivia<T>(T newArgument, SyntaxNode oldArgument)
680private async Task<SeparatedSyntaxList<SyntaxNode>> AddNewArgumentsToListAsync(
682SeparatedSyntaxList<SyntaxNode> newArguments,
683SeparatedSyntaxList<SyntaxNode> originalArguments,
740where T : SyntaxNode
741where U : SyntaxNode
780private ImmutableArray<SyntaxNode> VerifyAndPermuteParamNodes(IEnumerable<XmlElementSyntax> paramNodes, ISymbol declarationSymbol, SignatureChange updatedSignature)
790return ImmutableArray<SyntaxNode>.Empty;
796return ImmutableArray<SyntaxNode>.Empty;
806return ImmutableArray<SyntaxNode>.Empty;
812return ImmutableArray<SyntaxNode>.Empty;
820var permutedParams = ArrayBuilder<SyntaxNode>.GetInstance();
845var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
848using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var convertedMethodNodes);
850foreach (var node in root.DescendantNodes())
882protected override SyntaxNode AddNameToArgument(SyntaxNode newArgument, string name)
892protected override SyntaxNode CreateExplicitParamsArrayFromIndividualArguments(SeparatedSyntaxList<SyntaxNode> newArguments, int indexInExistingList, IParameterSymbol parameterSymbol)
CodeFixes\Suppression\CSharpSuppressionCodeFixProvider.cs (14)
35protected override SyntaxTriviaList CreatePragmaRestoreDirectiveTrivia(Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken)
42Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken)
49SyntaxToken disableOrRestoreKeyword, Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken)
84protected override bool IsAttributeListWithAssemblyAttributes(SyntaxNode node)
97protected override SyntaxNode AddGlobalSuppressMessageAttribute(
98SyntaxNode newRoot,
127protected override SyntaxNode AddLocalSuppressMessageAttribute(
128SyntaxNode targetNode, ISymbol targetSymbol, INamedTypeSymbol suppressMessageAttribute, Diagnostic diagnostic)
210protected override bool IsSingleAttributeInAttributeList(SyntaxNode attribute)
245protected override SyntaxNode GetContainingStatement(SyntaxToken token)
248=> (SyntaxNode)token.GetAncestor<StatementSyntax>() ?? token.GetAncestor<ArrowExpressionClauseSyntax>();
CodeRefactorings\EnableNullable\EnableNullableCodeRefactoringProvider.cs (11)
45var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
75var updatedDocumentRoot = await EnableNullableReferenceTypesAsync(document, fallbackOptions, cancellationToken).ConfigureAwait(false);
88private static async Task<SyntaxNode> EnableNullableReferenceTypesAsync(Document document, CodeActionOptionsProvider fallbackOptions, CancellationToken cancellationToken)
90var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
109private static (SyntaxNode root, SyntaxToken firstToken) RewriteExistingDirectives(SyntaxNode root, SyntaxToken firstToken)
126var updatedRoot = root.ReplaceNodes(
153private static async Task<SyntaxNode> DisableNullableReferenceTypesInExistingDocumentIfNecessaryAsync(Document document, SyntaxNode root, SyntaxToken firstToken, CodeActionOptionsProvider fallbackOptions, CancellationToken cancellationToken)
209private static SyntaxToken GetFirstTokenOfInterest(SyntaxNode root)
231private static bool HasLeadingNullableDirective(SyntaxNode root, [NotNullWhen(true)] out NullableDirectiveTriviaSyntax? leadingNullableDirective)
ConvertAutoPropertyToFullProperty\CSharpConvertAutoPropertyToFullPropertyCodeRefactoringProvider.cs (22)
48protected override (SyntaxNode newGetAccessor, SyntaxNode newSetAccessor) GetNewAccessors(
49CSharpCodeGenerationContextInfo info, SyntaxNode property,
57var getAccessorStatement = generator.ReturnStatement(generator.IdentifierName(fieldName));
58var newGetter = GetUpdatedAccessor(info, getAccessor, getAccessorStatement);
60SyntaxNode newSetter = null;
63var setAccessorStatement = generator.ExpressionStatement(generator.AssignmentStatement(
78private static SyntaxNode GetUpdatedAccessor(CSharpCodeGenerationContextInfo info,
79SyntaxNode accessor, SyntaxNode statement)
81var newAccessor = AddStatement(accessor, statement);
104internal static SyntaxNode AddStatement(SyntaxNode accessor, SyntaxNode statement)
115protected override SyntaxNode ConvertPropertyToExpressionBodyIfDesired(
116CSharpCodeGenerationContextInfo info, SyntaxNode property)
142protected override SyntaxNode GetTypeBlock(SyntaxNode syntaxNode)
145protected override SyntaxNode GetInitializerValue(SyntaxNode property)
148protected override SyntaxNode GetPropertyWithoutInitializer(SyntaxNode property)
CSharpDeclareAsNullableCodeFixProvider.cs (12)
52var node = context.Diagnostics.First().Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
61private static string GetEquivalenceKey(SyntaxNode node, SemanticModel model)
69static bool IsRemoteApiUsage(SyntaxNode node, SemanticModel model)
110var node = diagnostic.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
117var node = diagnostic.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
122SyntaxEditor editor, SemanticModel model, SyntaxNode node, HashSet<TypeSyntax> alreadyHandled, CancellationToken cancellationToken)
133SemanticModel model, SyntaxNode node, CancellationToken cancellationToken)
140var containingMember = node.GetAncestors().FirstOrDefault(
195var syntax = local.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
206var syntax = field.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
223var syntax = property.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
333private static bool IsExpressionSupported(SyntaxNode node)
CSharpInlineDeclarationCodeFixProvider.cs (13)
68var originalRoot = editor.OriginalRoot;
77using var _ = ArrayBuilder<SyntaxNode>.GetInstance(capacity: 2, out var additionalNodesToTrack);
91private static (VariableDeclaratorSyntax declarator, IdentifierNameSyntax identifier, SyntaxNode invocationOrCreation) FindDiagnosticNodes(
107private static SyntaxNode ReplaceIdentifierWithInlineDeclaration(
110SyntaxNode currentRoot, VariableDeclaratorSyntax declarator,
111IdentifierNameSyntax identifier, SyntaxNode currentNode,
337SyntaxNode nodeToReplace,
353var topmostContainer = GetTopmostContainer(nodeToReplace);
362var updatedTopmostContainer = topmostContainer.ReplaceNode(
373var updatedInvocationOrCreation = updatedTopmostContainer.GetAnnotatedNodes(annotation).Single();
386private static SyntaxNode GetTopmostContainer(SyntaxNode expression)
397int position, SyntaxNode topmostContainer,
EditAndContinue\CSharpEditAndContinueAnalyzer.cs (197)
45public CSharpEditAndContinueAnalyzer(Action<SyntaxNode>? testFaultInjector = null)
83internal override bool TryFindMemberDeclaration(SyntaxNode? root, SyntaxNode node, out OneOrMany<SyntaxNode> declarations)
85var current = node;
158internal override SyntaxNode? TryGetDeclarationBody(SyntaxNode node)
175internal override bool IsDeclarationWithSharedBody(SyntaxNode declaration)
178protected override ImmutableArray<ISymbol> GetCapturedVariables(SemanticModel model, SyntaxNode memberBody)
198protected override IEnumerable<SyntaxNode> GetVariableUseSites(IEnumerable<SyntaxNode> roots, ISymbol localOrParameter, SemanticModel model, CancellationToken cancellationToken)
231internal override IEnumerable<SyntaxToken>? TryGetActiveTokens(SyntaxNode node)
237var declarator = node;
292internal override (TextSpan envelope, TextSpan hole) GetActiveSpanEnvelope(SyntaxNode declaration)
295protected override SyntaxNode GetEncompassingAncestorImpl(SyntaxNode bodyOrMatchRoot)
326protected override SyntaxNode FindStatementAndPartner(SyntaxNode declarationBody, TextSpan span, SyntaxNode? partnerDeclarationBody, out SyntaxNode? partner, out int statementPart)
365SyntaxNode node;
520protected override bool AreEquivalent(SyntaxNode left, SyntaxNode right)
523private static bool AreEquivalentIgnoringLambdaBodies(SyntaxNode left, SyntaxNode right)
534internal override SyntaxNode FindDeclarationBodyPartner(SyntaxNode leftRoot, SyntaxNode rightRoot, SyntaxNode leftNode)
537internal override bool IsClosureScope(SyntaxNode node)
540protected override SyntaxNode? FindEnclosingLambdaBody(SyntaxNode? container, SyntaxNode node)
542var root = GetEncompassingAncestor(container);
544var current = node;
547if (LambdaUtilities.IsLambdaBodyStatementOrExpression(current, out var body))
558protected override IEnumerable<SyntaxNode> GetLambdaBodyExpressionsAndStatements(SyntaxNode lambdaBody)
561protected override SyntaxNode? TryGetPartnerLambdaBody(SyntaxNode oldBody, SyntaxNode newLambda)
564protected override Match<SyntaxNode> ComputeTopLevelMatch(SyntaxNode oldCompilationUnit, SyntaxNode newCompilationUnit)
567protected override Match<SyntaxNode> ComputeTopLevelDeclarationMatch(SyntaxNode oldDeclaration, SyntaxNode newDeclaration)
575protected override Match<SyntaxNode> ComputeBodyMatch(SyntaxNode oldBody, SyntaxNode newBody, IEnumerable<KeyValuePair<SyntaxNode, SyntaxNode>>? knownMatches)
599static SyntaxNode GetMatchingRoot(SyntaxNode body)
601var parent = body.Parent!;
607var oldRoot = GetMatchingRoot(oldBody);
608var newRoot = GetMatchingRoot(newBody);
627private static IEnumerable<SyntaxNode> GetChildNodes(SyntaxNode root, SyntaxNode body)
664internal override void ReportDeclarationInsertDeleteRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, SyntaxNode oldNode, SyntaxNode newNode, ISymbol oldSymbol, ISymbol newSymbol, EditAndContinueCapabilitiesGrantor capabilities, CancellationToken cancellationToken)
738SyntaxNode oldStatement,
740SyntaxNode oldBody,
741SyntaxNode newBody,
742[NotNullWhen(true)] out SyntaxNode? newStatement)
753newStatement = (SyntaxNode?)newConstructor.Initializer ?? newConstructor;
777protected override bool IsNamespaceDeclaration(SyntaxNode node)
780private static bool IsTypeDeclaration(SyntaxNode node)
783protected override bool IsCompilationUnitWithGlobalStatements(SyntaxNode node)
786protected override bool IsGlobalStatement(SyntaxNode node)
789protected override TextSpan GetGlobalStatementDiagnosticSpan(SyntaxNode node)
800protected override IEnumerable<SyntaxNode> GetTopLevelTypeDeclarations(SyntaxNode compilationUnit)
832protected override IEnumerable<SequenceEdit> GetSyntaxSequenceEdits(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes)
835internal override SyntaxNode EmptyCompilationUnit
842protected override bool StatementLabelEquals(SyntaxNode node1, SyntaxNode node2)
845protected override bool TryGetEnclosingBreakpointSpan(SyntaxNode root, int position, out TextSpan span)
848protected override bool TryGetActiveSpan(SyntaxNode node, int statementPart, int minLength, out TextSpan span)
913protected override IEnumerable<(SyntaxNode statement, int statementPart)> EnumerateNearStatements(SyntaxNode statement)
925var parent = statement.Parent;
970var node = nodeOrToken.AsNode();
1004protected override bool AreEquivalentActiveStatements(SyntaxNode oldStatement, SyntaxNode newStatement, int statementPart)
1116(SyntaxNode?)oldNode.Declaration ?? oldNode.Expression!,
1117(SyntaxNode?)newNode.Declaration ?? newNode.Expression!);
1150internal override bool IsInterfaceDeclaration(SyntaxNode node)
1153internal override bool IsRecordDeclaration(SyntaxNode node)
1156internal override SyntaxNode? TryGetContainingTypeDeclaration(SyntaxNode node)
1159internal override bool HasBackingField(SyntaxNode propertyOrIndexerDeclaration)
1163internal override bool TryGetAssociatedMemberDeclaration(SyntaxNode node, EditKind editKind, [NotNullWhen(true)] out SyntaxNode? declaration)
1190internal override bool IsDeclarationWithInitializer(SyntaxNode declaration)
1193internal override bool IsRecordPrimaryConstructorParameter(SyntaxNode declaration)
1196private static bool IsPropertyDeclarationMatchingPrimaryConstructorParameter(SyntaxNode declaration, INamedTypeSymbol newContainingType)
1218internal override bool IsPropertyAccessorDeclarationMatchingPrimaryConstructorParameter(SyntaxNode declaration, INamedTypeSymbol newContainingType, out bool isFirstAccessor)
1231internal override bool IsConstructorWithMemberInitializers(SyntaxNode constructorDeclaration)
1241protected override SyntaxNode GetSymbolDeclarationSyntax(SyntaxReference reference, CancellationToken cancellationToken)
1246SyntaxNode? oldNode,
1247SyntaxNode? newNode,
1250IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
1371var node = oldNode ?? newNode;
1429SyntaxNode node,
1465private static bool SupportsMove(SyntaxNode node)
1470internal override bool ContainsLambda(SyntaxNode declaration)
1473internal override bool IsLambda(SyntaxNode node)
1476internal override bool IsLocalFunction(SyntaxNode node)
1479internal override bool IsNestedFunction(SyntaxNode node)
1482internal override bool TryGetLambdaBodies(SyntaxNode node, [NotNullWhen(true)] out SyntaxNode? body1, out SyntaxNode? body2)
1485internal override SyntaxNode GetLambda(SyntaxNode lambdaBody)
1488internal override IMethodSymbol GetLambdaExpressionSymbol(SemanticModel model, SyntaxNode lambdaExpression, CancellationToken cancellationToken)
1490var bodyExpression = LambdaUtilities.GetNestedFunctionBody(lambdaExpression);
1494internal override SyntaxNode? GetContainingQueryExpression(SyntaxNode node)
1497internal override bool QueryClauseLambdasTypeEquivalent(SemanticModel oldModel, SyntaxNode oldNode, SemanticModel newModel, SyntaxNode newNode, CancellationToken cancellationToken)
1585protected override TextSpan? TryGetDiagnosticSpan(SyntaxNode node, EditKind editKind)
1588internal static new TextSpan GetDiagnosticSpan(SyntaxNode node, EditKind editKind)
1591private static TextSpan? TryGetDiagnosticSpanImpl(SyntaxNode node, EditKind editKind)
1595internal static TextSpan? TryGetDiagnosticSpanImpl(SyntaxKind kind, SyntaxNode node, EditKind editKind)
1713var startNode = parameter.Type ?? (SyntaxNode)parameter;
1910internal override TextSpan GetLambdaParameterDiagnosticSpan(SyntaxNode lambda, int ordinal)
1955protected override string? TryGetDisplayName(SyntaxNode node, EditKind editKind)
1958internal static new string? GetDisplayName(SyntaxNode node, EditKind editKind)
1961internal static string? TryGetDisplayNameImpl(SyntaxNode node, EditKind editKind)
2220protected override string GetSuspensionPointDisplayName(SyntaxNode node, EditKind editKind)
2245private readonly Match<SyntaxNode>? _match;
2246private readonly SyntaxNode? _oldNode;
2247private readonly SyntaxNode? _newNode;
2254SyntaxNode? oldNode,
2255SyntaxNode? newNode,
2257Match<SyntaxNode>? match = null,
2274private void ReportError(RudeEditKind kind, SyntaxNode? spanNode = null, SyntaxNode? displayNode = null)
2277var node = displayNode ?? _newNode ?? _oldNode;
2327private void ClassifyMove(SyntaxNode newNode)
2337private void ClassifyReorder(SyntaxNode newNode)
2366private void ClassifyInsert(SyntaxNode node)
2390private void ClassifyDelete(SyntaxNode oldNode)
2416private void ClassifyUpdate(SyntaxNode newNode)
2439public void ClassifyDeclarationBodyRudeUpdates(SyntaxNode newDeclarationOrBody)
2441foreach (var node in newDeclarationOrBody.DescendantNodesAndSelf(LambdaUtilities.IsNotLambda))
2456Match<SyntaxNode> match,
2457Edit<SyntaxNode> edit,
2458Dictionary<SyntaxNode, EditKind> editMap)
2469internal override void ReportMemberBodyUpdateRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, SyntaxNode newMember, TextSpan? span)
2479internal override void ReportInsertedMemberSymbolRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, ISymbol newSymbol, SyntaxNode newNode, bool insertingIntoExistingContainingType)
2544protected override List<SyntaxNode> GetExceptionHandlingAncestors(SyntaxNode node, bool isNonLeaf)
2546var result = new List<SyntaxNode>();
2548var current = node;
2596IEnumerable<Edit<SyntaxNode>> exceptionHandlingEdits,
2597SyntaxNode oldStatement,
2612private static bool AreExceptionClausesEquivalent(SyntaxNode oldNode, SyntaxNode newNode)
2645protected override TextSpan GetExceptionHandlingRegion(SyntaxNode node, out bool coversAllChildren)
2684internal override bool IsStateMachineMethod(SyntaxNode declaration)
2687protected override void GetStateMachineInfo(SyntaxNode body, out ImmutableArray<SyntaxNode> suspensionPoints, out StateMachineKinds kinds)
2704internal override void ReportStateMachineSuspensionPointRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, SyntaxNode oldNode, SyntaxNode newNode)
2708var oldContainingStatementPart = FindContainingStatementPart(oldNode);
2709var newContainingStatementPart = FindContainingStatementPart(newNode);
2720internal override void ReportStateMachineSuspensionPointDeletedRudeEdit(ArrayBuilder<RudeEditDiagnostic> diagnostics, Match<SyntaxNode> match, SyntaxNode deletedSuspensionPoint)
2724match.Matches.TryGetValue(deletedSuspensionPoint, out var newForEachStatement) &&
2739match.Matches.TryGetValue(deletedSuspensionPoint.Parent!.Parent!, out var newLocalDeclaration) &&
2754internal override void ReportStateMachineSuspensionPointInsertedRudeEdit(ArrayBuilder<RudeEditDiagnostic> diagnostics, Match<SyntaxNode> match, SyntaxNode insertedSuspensionPoint, bool aroundActiveStatement)
2758match.ReverseMatches.TryGetValue(insertedSuspensionPoint, out var oldNode) &&
2773match.ReverseMatches.TryGetValue(insertedSuspensionPoint.Parent!.Parent!, out var oldLocalDeclaration) &&
2790private static SyntaxNode FindContainingStatementPart(SyntaxNode node)
2824private static bool HasNoSpilledState(SyntaxNode awaitExpression, SyntaxNode containingStatementPart)
2865private static ExpressionSyntax GetExpressionFromStatementPart(SyntaxNode statement)
2881private static bool IsSimpleAwaitAssignment(SyntaxNode node, SyntaxNode awaitExpression)
2897Match<SyntaxNode> match,
2898SyntaxNode oldActiveStatement,
2899SyntaxNode newActiveStatement,
2914private void ReportRudeEditsForSwitchWhenClauses(ArrayBuilder<RudeEditDiagnostic> diagnostics, SyntaxNode oldActiveStatement, SyntaxNode newActiveStatement)
2971SyntaxNode oldActiveStatement,
2972SyntaxNode newActiveStatement,
3005private static CheckedStatementSyntax? TryGetCheckedStatementAncestor(SyntaxNode? node)
3026Match<SyntaxNode> match,
3027SyntaxNode oldActiveStatement,
3028SyntaxNode newActiveStatement)
EditAndContinue\SyntaxComparer.cs (56)
31SyntaxNode? oldRoot,
32SyntaxNode? newRoot,
33IEnumerable<SyntaxNode>? oldRootChildren,
34IEnumerable<SyntaxNode>? newRootChildren,
40protected override bool IsLambdaBodyStatementOrExpression(SyntaxNode node)
233internal override int Classify(int kind, SyntaxNode? node, out bool isLeaf)
236internal Label Classify(SyntaxKind kind, SyntaxNode? node, out bool isLeaf)
292private static Label ClassifyStatementSyntax(SyntaxKind kind, SyntaxNode? node, out bool isLeaf)
559private static Label ClassifyTopSyntax(SyntaxKind kind, SyntaxNode? node, out bool isLeaf)
697public override bool ValuesEqual(SyntaxNode left, SyntaxNode right)
716var leftBody = GetBody(left);
717var rightBody = GetBody(right);
756private static SyntaxNode? GetBody(SyntaxNode node)
760case BaseMethodDeclarationSyntax baseMethodDeclarationSyntax: return baseMethodDeclarationSyntax.Body ?? (SyntaxNode?)baseMethodDeclarationSyntax.ExpressionBody?.Expression;
761case AccessorDeclarationSyntax accessorDeclarationSyntax: return accessorDeclarationSyntax.Body ?? (SyntaxNode?)accessorDeclarationSyntax.ExpressionBody?.Expression;
766protected override bool TryComputeWeightedDistance(SyntaxNode leftNode, SyntaxNode rightNode, out double distance)
808(SyntaxNode?)leftUsing.Expression ?? leftUsing.Declaration!,
810(SyntaxNode?)rightUsing.Expression ?? rightUsing.Declaration!,
929private static double ComputeWeightedDistanceOfNestedFunctions(SyntaxNode leftNode, SyntaxNode rightNode)
931GetNestedFunctionsParts(leftNode, out var leftParameters, out var leftAsync, out var leftBody, out var leftModifiers, out var leftReturnType, out var leftIdentifier, out var leftTypeParameters);
932GetNestedFunctionsParts(rightNode, out var rightParameters, out var rightAsync, out var rightBody, out var rightModifiers, out var rightReturnType, out var rightIdentifier, out var rightTypeParameters);
956SyntaxNode nestedFunction,
959out SyntaxNode body,
1012body = (SyntaxNode?)localFunction.Body ?? localFunction.ExpressionBody!;
1194SyntaxNode? leftHeader,
1196SyntaxNode? rightHeader,
1272foreach (var child in block.ChildNodes())
1367SyntaxNode? left1,
1368SyntaxNode? right1,
1369SyntaxNode? left2,
1370SyntaxNode? right2,
1402private static SyntaxNodeOrToken? TryGetName(SyntaxNode node)
1497public sealed override double GetDistance(SyntaxNode oldNode, SyntaxNode newNode)
1519internal static double ComputeValueDistance(SyntaxNode? oldNode, SyntaxNode? newNode)
1548var leftNode = oldNodeOrToken.AsNode();
1549var rightNode = newNodeOrToken.AsNode();
1562where TSyntaxNode : SyntaxNode
1579public static double ComputeDistance(SyntaxNode? oldNode, SyntaxNode? newNode)
1622public static double ComputeDistance(IEnumerable<SyntaxNode>? oldNodes, IEnumerable<SyntaxNode>? newNodes)
1631public static double ComputeDistance(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes)
1637public static IEnumerable<SequenceEdit> GetSequenceEdits(IEnumerable<SyntaxNode>? oldNodes, IEnumerable<SyntaxNode>? newNodes)
1643public static IEnumerable<SequenceEdit> GetSequenceEdits(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes)
1666private sealed class LcsNodes : LongestCommonImmutableArraySubsequence<SyntaxNode>
1670protected override bool Equals(SyntaxNode oldElement, SyntaxNode newElement)
ExtractMethod\CSharpSelectionValidator.cs (24)
45var root = SemanticDocument.Root;
120foreach (var ancestor in selectionInfo.CommonRootFromOriginalSpan.AncestorsAndSelf())
139var expressionNode = selectionInfo.FirstTokenInFinalSpan.GetCommonRoot(selectionInfo.LastTokenInFinalSpan);
178var node = selectionInfo.FirstTokenInFinalSpan.GetCommonRoot(selectionInfo.LastTokenInFinalSpan);
186var firstValidNode = node.GetAncestors<SyntaxNode>().FirstOrDefault(n => Check(semanticModel, n, cancellationToken));
203private SelectionInfo GetInitialSelectionInfo(SyntaxNode root, SourceText text)
237var commonRoot = firstTokenInSelection.GetCommonRoot(lastTokenInSelection);
286SyntaxNode root)
299var commonNode = selectionInfo.FirstTokenInFinalSpan.GetCommonRoot(selectionInfo.LastTokenInFinalSpan);
351private static SelectionInfo AssignInitialFinalTokens(SelectionInfo selectionInfo, SyntaxNode root, CancellationToken cancellationToken)
419public override bool ContainsNonReturnExitPointsStatements(IEnumerable<SyntaxNode> jumpsOutOfRegion)
422public override IEnumerable<SyntaxNode> GetOuterReturnStatements(SyntaxNode commonRoot, IEnumerable<SyntaxNode> jumpsOutOfRegion)
426var container = commonRoot.GetAncestorsOrThis<SyntaxNode>().Where(a => a.IsReturnableConstruct()).FirstOrDefault();
429return SpecializedCollections.EmptyEnumerable<SyntaxNode>();
432var returnableConstructPairs = returnStatements.Select(r => Tuple.Create(r, r.GetAncestors<SyntaxNode>().Where(a => a.IsReturnableConstruct()).FirstOrDefault()))
440SyntaxNode root, TextSpan textSpan,
441IEnumerable<SyntaxNode> returnStatements, CancellationToken cancellationToken)
455var container = lastToken.GetAncestors<SyntaxNode>().FirstOrDefault(n => n.IsReturnableConstruct());
529public SyntaxNode CommonRootFromOriginalSpan { get; set; }
GenerateConstructor\CSharpGenerateConstructorService.cs (7)
34protected override bool IsSimpleNameGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken)
37protected override bool IsConstructorInitializerGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken)
40protected override bool IsImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken)
45SyntaxNode node,
83SyntaxNode node,
115SyntaxNode node,
150SyntaxNode node,
GenerateType\CSharpGenerateTypeService.cs (11)
501? genericName.TypeArgumentList.Arguments.OfType<SyntaxNode>().ToList()
502: Enumerable.Repeat<SyntaxNode>(null, state.SimpleName.Arity);
568INamedTypeSymbol namedTypeSymbol, string[] containers, Document selectedDocument, SyntaxNode selectedDocumentRoot, CancellationToken cancellationToken)
667var node = expression as SyntaxNode;
694var node = expression as SyntaxNode;
695SyntaxNode previousNode = null;
746private static bool IsAllContainingTypeDeclsPublic(SyntaxNode node)
767Solution updatedSolution, SyntaxNode modifiedRoot, Document document, SimpleNameSyntax simpleName, string includeUsingsOrImports, AddImportPlacementOptionsProvider fallbackOptions, CancellationToken cancellationToken)
775SyntaxNode root = null;
ImplementInterface\AbstractChangeImplementationCodeRefactoringProvider.cs (9)
45protected abstract SyntaxNode ChangeImplementation(SyntaxGenerator generator, SyntaxNode currentDecl, ISymbol implMember, ISymbol interfaceMember);
126private static async Task<(SyntaxNode?, ExplicitInterfaceSpecifierSyntax?, SyntaxToken)> GetContainerAsync(CodeRefactoringContext context)
130var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
153private static (SyntaxNode?, ExplicitInterfaceSpecifierSyntax?, SyntaxToken) GetContainer(SyntaxToken token)
155for (var node = token.Parent; node != null; node = node.Parent)
162_ => default((SyntaxNode member, ExplicitInterfaceSpecifierSyntax?, SyntaxToken)),
228var documentToImplDeclarations = new OrderedMultiDictionary<Document, (SyntaxNode, ISymbol impl, SetWithInsertionOrder<ISymbol> interfaceMembers)>();
234var decl = await syntaxRef.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
IntroduceVariable\CSharpIntroduceVariableService_IntroduceLocal.cs (18)
32var containerToGenerateInto = expression.Ancestors().FirstOrDefault(s =>
114var newRoot = document.Root.ReplaceNode(oldLambda, newLambda);
226var oldParentingNode = oldBody.Parent;
244var newRoot = document.Root.ReplaceNode(oldParentingNode, WithBlockBody(oldParentingNode, newBody));
248private static SyntaxNode WithBlockBody(SyntaxNode node, BlockSyntax body)
294SyntaxNode scope = block;
312var root = document.Root;
315SyntaxNode innermostCommonBlock;
327root = root.TrackNodes(allAffectedStatements.Concat(new SyntaxNode[] { expression, statement }));
346var newInnerMostBlock = Rewrite(
350var finalInnerMostBlock = WithStatements(newInnerMostBlock, statements);
352var newRoot = root.ReplaceNode(innermostCommonBlock, finalInnerMostBlock);
373private static int GetFirstStatementAffectedIndex(SyntaxNode innermostCommonBlock, ISet<ExpressionSyntax> matches, int firstStatementAffectedIndex)
442private static bool IsBlockLike(SyntaxNode node) => node is BlockSyntax or SwitchSectionSyntax;
444private static SyntaxList<StatementSyntax> GetStatements(SyntaxNode blockLike)
452private static SyntaxNode WithStatements(SyntaxNode blockLike, SyntaxList<StatementSyntax> statements)
SignatureHelp\ElementAccessExpressionSignatureHelpProvider.cs (7)
45private static bool TryGetElementAccessExpression(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, SignatureHelpTriggerReason triggerReason, CancellationToken cancellationToken, [NotNullWhen(true)] out ExpressionSyntax? identifier, out SyntaxToken openBrace)
54var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
135private static SignatureHelpState? GetCurrentArgumentState(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, TextSpan currentSpan, CancellationToken cancellationToken)
308internal static bool TryGetSyntax(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, SignatureHelpTriggerReason triggerReason, CancellationToken cancellationToken, [NotNullWhen(true)] out ExpressionSyntax? identifier, out SyntaxToken openBrace)
343internal static TextSpan GetTextSpan(SyntaxNode expression, SyntaxToken openBracket)
349internal static bool TryGetSyntax(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, SignatureHelpTriggerReason triggerReason, CancellationToken cancellationToken, [NotNullWhen(true)] out ExpressionSyntax? identifier, out SyntaxToken openBrace)
386internal static bool TryGetSyntax(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, SignatureHelpTriggerReason triggerReason, CancellationToken cancellationToken, [NotNullWhen(true)] out ExpressionSyntax? identifier, out SyntaxToken openBrace)
SignatureHelp\TupleConstructionSignatureHelpProvider.cs (9)
37private SignatureHelpState? GetCurrentArgumentState(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, TextSpan currentSpan, CancellationToken cancellationToken)
63private bool GetOuterMostTupleExpressionInSpan(SyntaxNode root, int position,
82private bool GetOuterMostParenthesizedExpressionInSpan(SyntaxNode root, int position,
109var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
125private IEnumerable<INamedTypeSymbol>? FindNearestTupleConstructionWithInferrableType(SyntaxNode root, SemanticModel semanticModel, int position, SignatureHelpTriggerInfo triggerInfo,
150private SignatureHelpItems? CreateItems(int position, SyntaxNode root, ISyntaxFactsService syntaxFacts,
151SyntaxNode targetExpression, SemanticModel semanticModel, IEnumerable<INamedTypeSymbol> tupleTypes, CancellationToken cancellationToken)
202private bool TryGetTupleExpression(SignatureHelpTriggerReason triggerReason, SyntaxNode root, int position,
219private bool TryGetParenthesizedExpression(SignatureHelpTriggerReason triggerReason, SyntaxNode root, int position,
Snippets\AbstractCSharpAutoPropertySnippetProvider.cs (7)
41protected override async Task<SyntaxNode> GenerateSnippetSyntaxAsync(Document document, int position, CancellationToken cancellationToken)
72protected override int GetTargetCaretPosition(ISyntaxFactsService syntaxFacts, SyntaxNode caretTarget, SourceText sourceText)
78protected override ImmutableArray<SnippetPlaceholder> GetPlaceHolderLocationsList(SyntaxNode node, ISyntaxFacts syntaxFacts, CancellationToken cancellationToken)
90protected override SyntaxNode? FindAddedSnippetSyntaxNode(SyntaxNode root, int position, Func<SyntaxNode?, bool> isCorrectContainer)
92var node = root.FindNode(TextSpan.FromBounds(position, position));
Snippets\CSharpForEachLoopSnippetProvider.cs (11)
38protected override async Task<SyntaxNode> CreateForEachLoopStatementSyntaxAsync(Document document, int position, CancellationToken cancellationToken)
60protected override ImmutableArray<SnippetPlaceholder> GetPlaceHolderLocationsList(SyntaxNode node, ISyntaxFacts syntaxFacts, CancellationToken cancellationToken)
63GetPartsOfForEachStatement(node, out var identifier, out var expression, out var _1);
89var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
90var snippet = root.GetAnnotatedNodes(_findSnippetAnnotation).FirstOrDefault();
102var newRoot = root.ReplaceNode(foreachStatement, newForEachStatement);
110protected override int GetTargetCaretPosition(ISyntaxFactsService syntaxFacts, SyntaxNode caretTarget, SourceText sourceText)
121private static void GetPartsOfForEachStatement(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode expression, out SyntaxNode statement)
SplitOrMergeIfStatements\CSharpIfLikeStatementGenerator.cs (33)
27public bool IsIfOrElseIf(SyntaxNode node) => node is IfStatementSyntax;
29public bool IsCondition(SyntaxNode expression, out SyntaxNode ifOrElseIf)
41public bool IsElseIfClause(SyntaxNode node, out SyntaxNode parentIfOrElseIf)
53public bool HasElseIfClause(SyntaxNode ifOrElseIf, out SyntaxNode elseIfClause)
66public SyntaxNode GetCondition(SyntaxNode ifOrElseIf)
72public SyntaxNode GetRootIfStatement(SyntaxNode ifOrElseIf)
84public ImmutableArray<SyntaxNode> GetElseIfAndElseClauses(SyntaxNode ifOrElseIf)
88var builder = ImmutableArray.CreateBuilder<SyntaxNode>();
104public SyntaxNode WithCondition(SyntaxNode ifOrElseIf, SyntaxNode condition)
110public SyntaxNode WithStatementInBlock(SyntaxNode ifOrElseIf, SyntaxNode statement)
116public SyntaxNode WithStatementsOf(SyntaxNode ifOrElseIf, SyntaxNode otherIfOrElseIf)
123public SyntaxNode WithElseIfAndElseClausesOf(SyntaxNode ifStatement, SyntaxNode otherIfStatement)
126public SyntaxNode ToIfStatement(SyntaxNode ifOrElseIf)
129public SyntaxNode ToElseIfClause(SyntaxNode ifOrElseIf)
132public void InsertElseIfClause(SyntaxEditor editor, SyntaxNode afterIfOrElseIf, SyntaxNode elseIfClause)
154public void RemoveElseIfClause(SyntaxEditor editor, SyntaxNode elseIfClause)
Structure\CSharpStructureHelpers.cs (14)
107public static SyntaxToken GetLastInlineMethodBlockToken(SyntaxNode node)
233SyntaxNode node,
255static bool TryGetLeadingCollapsibleSpan(SyntaxNode node, out BlockSpan span)
289static SyntaxToken GetEndToken(SyntaxNode node)
309static SyntaxToken GetHintTextEndToken(SyntaxNode node)
342SyntaxNode node, string bannerText, bool autoCollapse,
354SyntaxNode node, SyntaxToken syntaxToken, bool compressEmptyLines,
364SyntaxNode node, SyntaxToken startToken,
391private static TextSpan GetHintSpan(SyntaxNode node, int endPos)
409SyntaxNode node, SyntaxToken startToken,
420SyntaxNode node, bool autoCollapse, string type, bool isCollapsible)
433SyntaxNode node, SyntaxToken syntaxToken, bool compressEmptyLines,
447SyntaxNode node, SyntaxToken startToken, SyntaxToken endToken, bool compressEmptyLines,
462IEnumerable<SyntaxNode> syntaxList, bool compressEmptyLines, bool autoCollapse,
UseExplicitTypeCodeFixProvider.cs (9)
47var root = editor.OriginalRoot;
51var node = root.FindNode(diagnostic.Location.SourceSpan, getInnermostNodeForTie: true);
58SyntaxNode node, CancellationToken cancellationToken)
60var declarationContext = node.Parent;
131private static async Task UpdateTypeSyntaxAsync(Document document, SyntaxEditor editor, TypeSyntax typeSyntax, SyntaxNode declarationSyntax, CancellationToken cancellationToken)
150SyntaxNode declarationSyntax,
174using var _ = ArrayBuilder<SyntaxNode>.GetInstance(elements.Length, out var builder);
210private static SyntaxNode GenerateTypeDeclaration(TypeSyntax typeSyntax, ITypeSymbol newTypeSymbol)
221private static ITypeSymbol GetConvertedType(SemanticModel semanticModel, SyntaxNode typeSyntax, CancellationToken cancellationToken)
UseExpressionBody\UseExpressionBodyCodeRefactoringProvider.cs (30)
69var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
70var node = root.FindToken(position).Parent!;
87var declaration = TryGetDeclaration(helper, text, node, position);
97private static SyntaxNode? TryGetDeclaration(
98UseExpressionBodyHelper helper, SourceText text, SyntaxNode node, int position)
100var declaration = GetDeclaration(node, helper);
118CodeRefactoringContext context, SyntaxNode root, SyntaxNode declaration,
154private static SyntaxNode? GetDeclaration(SyntaxNode node, UseExpressionBodyHelper helper)
156for (var current = node; current != null; current = current.Parent)
166Document document, SyntaxNode root, SyntaxNode declaration,
171var newRoot = GetUpdatedRoot(semanticModel, root, declaration, helper, useExpressionBody);
175private static SyntaxNode GetUpdatedRoot(
176SemanticModel semanticModel, SyntaxNode root, SyntaxNode declaration,
179var updatedDeclaration = helper.Update(semanticModel, declaration, useExpressionBody);
181var parent = declaration is AccessorDeclarationSyntax
185var updatedParent = parent.ReplaceNode(declaration, updatedDeclaration)
202var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
209static IEnumerable<SyntaxNode> GetDeclarationsToFix(
211SyntaxNode root,
219var spanNode = root.FindNode(span);
221foreach (var node in spanNode.DescendantNodesAndSelf())
241SyntaxNode root,
242ImmutableArray<SyntaxNode> declarationsToFix,
248var currentRoot = root.TrackNodes(declarationsToFix);
251foreach (var declaration in declarationsToFix.Reverse())
257var currentDeclaration = currentRoot.GetCurrentNodes(declaration).Single();
UseExpressionBodyHelper`1.cs (10)
25where TDeclaration : SyntaxNode
60public override BlockSyntax? GetBody(SyntaxNode declaration)
63public override ArrowExpressionClauseSyntax? GetExpressionBody(SyntaxNode declaration)
66public override bool IsRelevantDeclarationNode(SyntaxNode node)
69public override bool CanOfferUseExpressionBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer)
72public override bool CanOfferUseBlockBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, out bool fixesError, [NotNullWhen(true)] out ArrowExpressionClauseSyntax? expressionBody)
75public sealed override SyntaxNode Update(SemanticModel semanticModel, SyntaxNode declaration, bool useExpressionBody)
78public override Location GetDiagnosticLocation(SyntaxNode declaration)
127SyntaxNode declaration, ExpressionBodyPreference conversionPreference,
UseUtf8StringLiteralDiagnosticAnalyzer.cs (3)
118private void ReportParameterArrayDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, ImmutableArray<IOperation> elements, ReportDiagnostic severity, ArrayCreationOperationLocation operationLocation)
130private void ReportArrayCreationDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, ReportDiagnostic severity)
138private void ReportDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, ReportDiagnostic severity, Location location, ArrayCreationOperationLocation operationLocation)
AbstractConvertToAsyncCodeFixProvider.cs (10)
20protected abstract Task<string> GetDescriptionAsync(Diagnostic diagnostic, SyntaxNode node, SemanticModel semanticModel, CancellationToken cancellationToken);
21protected abstract Task<Tuple<SyntaxTree, SyntaxNode>> GetRootInOtherSyntaxTreeAsync(SyntaxNode node, SemanticModel semanticModel, Diagnostic diagnostic, CancellationToken cancellationToken);
32var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
33if (!TryGetNode(root, context.Span, out var node))
48private static bool TryGetNode(SyntaxNode root, TextSpan span, out SyntaxNode node)
51var ancestors = root.FindToken(span.Start).GetAncestors<SyntaxNode>();
62SyntaxNode node, Document document, Diagnostic diagnostic, CancellationToken cancellationToken)
71var newRoot = result.Item2;
AbstractFileHeaderCodeFixProvider.cs (8)
49private async Task<SyntaxNode> GetTransformedSyntaxRootAsync(Document document, CodeActionOptionsProvider fallbackOptions, CancellationToken cancellationToken)
58internal static async Task<SyntaxNode> GetTransformedSyntaxRootAsync(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, Document document, string? fileHeaderTemplate, CancellationToken cancellationToken)
61var root = await tree.GetRootAsync(cancellationToken).ConfigureAwait(false);
81SyntaxNode newSyntaxRoot;
94private static SyntaxNode ReplaceHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
176private static SyntaxNode AddHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
AbstractMakeMethodAsynchronousCodeFixProvider.cs (15)
21protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
28protected abstract SyntaxNode AddAsyncTokenAndFixReturnType(
29bool keepVoid, IMethodSymbol methodSymbol, SyntaxNode node, KnownTypes knownTypes, CancellationToken cancellationToken);
42var node = GetContainingFunction(diagnostic, cancellationToken);
87private static IMethodSymbol? GetMethodSymbol(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
109var node = GetContainingFunction(diagnostic, cancellationToken);
147private SyntaxNode? GetContainingFunction(Diagnostic diagnostic, CancellationToken cancellationToken)
150var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
157SyntaxNode node,
173var newRoot = await newDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
174if (syntaxPath.TryResolve(newRoot, out SyntaxNode? newNode))
189SyntaxNode node,
192var newNode = AddAsyncTokenAndFixReturnType(keepVoid, methodSymbol, node, knownTypes, cancellationToken);
194var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
195var newRoot = root.ReplaceNode(node, newNode);
AbstractMakeMethodSynchronousCodeFixProvider.cs (28)
24protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
25protected abstract SyntaxNode RemoveAsyncTokenAndFixReturnType(IMethodSymbol methodSymbol, SyntaxNode node, KnownTypes knownTypes);
35var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
52Document document, SyntaxNode node, CancellationToken cancellationToken)
73private async Task<Solution> RenameThenRemoveAsyncTokenAsync(Document document, SyntaxNode node, IMethodSymbol methodSymbol, CancellationToken cancellationToken)
85var newRoot = await newDocument.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
86if (syntaxPath.TryResolve(newRoot, out SyntaxNode? newNode))
97Document document, IMethodSymbol methodSymbol, SyntaxNode node, CancellationToken cancellationToken)
103var newNode = RemoveAsyncTokenAndFixReturnType(methodSymbol, node, knownTypes)
106var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
107var newRoot = root.ReplaceNode(node, newNode);
122var syntaxRoot = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
123var methodDeclaration = syntaxRoot.GetAnnotatedNodes(annotation).FirstOrDefault();
175var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
184var newRoot = editor.GetChangedRoot();
190SyntaxNode root, ReferenceLocation referenceLocation,
201var nameNode = token.Parent;
213var expressionNode = nameNode;
227var invocationExpression = expressionNode.Parent;
233var awaitExpression = invocationExpression.GetRequiredParent();
241var parentMemberAccessExpression = invocationExpression.GetRequiredParent();
242var parentMemberAccessExpressionNameNode = syntaxFacts.GetNameOfMemberAccessExpression(parentMemberAccessExpression);
247var parentExpression = parentMemberAccessExpression.Parent;
250var awaitExpression = parentExpression.GetRequiredParent();
253var currentConfigureAwaitInvocation = syntaxFacts.GetExpressionOfAwaitExpression(currentAwaitExpression);
254var currentMemberAccess = syntaxFacts.GetExpressionOfInvocationExpression(currentConfigureAwaitInvocation);
255var currentInvocationExpression = syntaxFacts.GetExpressionOfMemberAccessExpression(currentMemberAccess);
AbstractRemoveAsyncModifierCodeFixProvider.cs (38)
22where TReturnStatementSyntax : SyntaxNode
23where TExpressionSyntax : SyntaxNode
25protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
26protected abstract SyntaxNode RemoveAsyncModifier(SyntaxGenerator generator, SyntaxNode methodLikeNode);
27protected abstract SyntaxNode? ConvertToBlockBody(SyntaxNode node, TExpressionSyntax expressionBody);
38var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
78var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
104private static IMethodSymbol? GetMethodSymbol(SyntaxNode node, SemanticModel semanticModel, CancellationToken cancellationToken)
117private SyntaxNode RemoveAsyncModifier(
121SyntaxNode node,
128var expression = generator.GetExpression(node);
134var blockBodiedNode = ConvertToBlockBody(node, expressionBody);
146var newExpressionBody = WrapExpressionWithTaskFromResult(generator, expressionBody, returnType, knownTypes);
166private static ControlFlowAnalysis? GetControlFlowAnalysis(SyntaxGenerator generator, SemanticModel semanticModel, SyntaxNode node)
177private static SyntaxNode AddReturnStatement(SyntaxGenerator generator, SyntaxNode node)
180private SyntaxNode ChangeReturnStatements(
184SyntaxNode node,
196var returnExpression = syntaxFacts.GetExpressionOfReturnStatement(returnSyntax);
200var returnTaskCompletedTask = GetReturnTaskCompletedTaskStatement(generator, returnType, knownTypes);
206var newExpression = WrapExpressionWithTaskFromResult(generator, returnExpression, returnType, knownTypes);
214private static SyntaxNode GetReturnTaskCompletedTaskStatement(SyntaxGenerator generator, ITypeSymbol returnType, KnownTypes knownTypes)
216SyntaxNode invocation;
219var taskTypeExpression = TypeExpressionForStaticMemberAccess(generator, knownTypes.TaskType);
227var statement = generator.ReturnStatement(invocation);
231private static SyntaxNode WrapExpressionWithTaskFromResult(SyntaxGenerator generator, SyntaxNode expression, ITypeSymbol returnType, KnownTypes knownTypes)
235var taskTypeExpression = TypeExpressionForStaticMemberAccess(generator, knownTypes.TaskType!);
237var memberName = generator.GenericName(nameof(Task.FromResult), unwrappedReturnType);
238var taskFromResult = generator.MemberAccessExpression(taskTypeExpression, memberName);
249private static SyntaxNode TypeExpressionForStaticMemberAccess(SyntaxGenerator generator, INamedTypeSymbol typeSymbol)
254var typeExpression = generator.TypeExpression(typeSymbol);
258static SyntaxNode QualifiedNameToMemberAccess(int qualifiedNameSyntaxKind, int memberAccessExpressionSyntaxKind, SyntaxNode expression, SyntaxGenerator generator)
262var left = QualifiedNameToMemberAccess(qualifiedNameSyntaxKind, memberAccessExpressionSyntaxKind, expression.ChildNodes().First(), generator);
263var right = expression.ChildNodes().Last();
AbstractRemoveUnnecessaryPragmaSuppressionsDiagnosticAnalyzer.cs (22)
125var root = tree.GetRoot(cancellationToken);
164using var _5 = PooledDictionary<string, List<SyntaxNode>>.GetInstance(out var idToSuppressMessageAttributesMap);
165using var _6 = PooledDictionary<SyntaxNode, bool>.GetInstance(out var suppressMessageAttributesToIsUsedMap);
208foreach (var attributeNode in attributeNodes)
224SyntaxNode root,
249foreach (var errorCodeNode in errorCodeNodes)
295SyntaxNode idNode,
389SyntaxNode root,
510PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
511PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
583PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
584PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
593var attributeNode = await attribute.ApplicationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
594foreach (var node in suppressMessageAttributesForId)
608PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
660PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
730SyntaxNode root,
733PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
734PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
749foreach (var node in declarationNodes)
795nodesForId = new List<SyntaxNode>();
799var attributeNode = await attribute.ApplicationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
AbstractRemoveUnusedValuesCodeFixProvider.cs (73)
48where TExpressionSyntax : SyntaxNode
49where TStatementSyntax : SyntaxNode
54where TVariableDeclaratorSyntax : SyntaxNode
55where TSwitchCaseBlockSyntax : SyntaxNode
56where TSwitchCaseLabelOrClauseSyntax : SyntaxNode
77protected abstract SyntaxNode TryUpdateNameForFlaggedNode(SyntaxNode node, SyntaxToken newName);
101protected abstract SyntaxNode GetReplacementNodeForCompoundAssignment(
102SyntaxNode originalCompoundAssignment,
103SyntaxNode newAssignmentTarget,
111protected abstract SyntaxNode GetReplacementNodeForVarPattern(SyntaxNode originalVarPattern, SyntaxNode newNameNode);
123protected virtual SyntaxNode? TryUpdateParentOfUpdatedNode(SyntaxNode parent, SyntaxNode newNameNode, SyntaxEditor editor, ISyntaxFacts syntaxFacts, SemanticModel semanticModel) => null;
157var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
158var node = root.FindNode(context.Span, getInnermostNodeForTie: true);
227private static IEnumerable<IGrouping<SyntaxNode, Diagnostic>> GetDiagnosticsGroupedByMember(
230SyntaxNode root,
252private static IEnumerable<IGrouping<SyntaxNode, Diagnostic>> GetDiagnosticsGroupedByMember(
255SyntaxNode root)
266var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
277var newRoot = await GetNewRootAsync(preprocessedDocument, formattingOptions, diagnostics, cancellationToken).ConfigureAwait(false);
281private async Task<SyntaxNode> GetNewRootAsync(
287var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
313var containingMemberDeclaration = diagnosticsToFix.Key;
323var currentRoot = editor.GetChangedRoot();
324var newRoot = await PostProcessDocumentAsync(document, options, currentRoot,
338SyntaxNode root,
339SyntaxNode containingMemberDeclaration,
375SyntaxNode root,
400var expression = syntaxFacts.GetExpressionOfExpressionStatement(expressionStatement);
416var expression = syntaxFacts.GetExpressionOfExpressionStatement(node);
418var localDecl = editor.Generator.LocalDeclarationStatement(
434SyntaxNode root,
435SyntaxNode containingMemberDeclaration,
458using var _1 = PooledDictionary<SyntaxNode, SyntaxNode>.GetInstance(out var nodeReplacementMap);
459using var _2 = PooledHashSet<SyntaxNode>.GetInstance(out var nodesToRemove);
460using var _3 = PooledHashSet<(TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode node)>.GetInstance(out var nodesToAdd);
462using var _4 = PooledHashSet<SyntaxNode>.GetInstance(out var processedNodes);
538var newNameNode = TryUpdateNameForFlaggedNode(node, newNameToken);
558var newParentNode = TryUpdateParentOfUpdatedNode(node.GetRequiredParent(), newNameNode, editor, syntaxFacts, semanticModel);
634foreach (var node in nodesToRemove)
662IEnumerable<(SyntaxNode node, bool isUnusedLocalAssignment)> GetNodesToFix()
666var node = root.FindNode(diagnostic.Location.SourceSpan, getInnermostNodeForTie: true);
680void InsertLocalDeclarationStatement(TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode node)
683var insertionNode = node.FirstAncestorOrSelf<SyntaxNode>(
714bool ShouldRemoveStatement(TLocalDeclarationStatementSyntax localDeclarationStatement, out SeparatedSyntaxList<SyntaxNode> variables)
720foreach (var variable in variables)
734private async Task<SyntaxNode> PostProcessDocumentAsync(
737SyntaxNode currentRoot,
763private static async Task<SyntaxNode> PostProcessDocumentCoreAsync(
764Func<SyntaxNode, Document, SyntaxFormattingOptions, CancellationToken, Task<SyntaxNode>> processMemberDeclarationAsync,
765SyntaxNode currentRoot,
774var newRoot = await newDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
775using var _1 = PooledDictionary<SyntaxNode, SyntaxNode>.GetInstance(out var memberDeclReplacementsMap);
777foreach (var memberDecl in newRoot.DescendantNodes().Where(n => n.HasAnnotation(s_memberAnnotation)))
779var newMemberDecl = await processMemberDeclarationAsync(memberDecl, newDocument, options, cancellationToken).ConfigureAwait(false);
795private async Task<SyntaxNode> ReplaceDiscardDeclarationsWithAssignmentsAsync(SyntaxNode memberDeclaration, Document document, SyntaxFormattingOptions options, CancellationToken cancellationToken)
811private async Task<SyntaxNode> AdjustLocalDeclarationsAsync(
812SyntaxNode memberDeclaration,
834var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
835var rootWithTrackedNodes = root.TrackNodes(originalDeclStatementsToMoveOrRemove);
893var rootWithRemovedDeclaration = root.RemoveNode(newDecl, SyntaxGenerator.DefaultRemoveOptions | SyntaxRemoveOptions.KeepLeadingTrivia);
921private readonly SyntaxNode _memberDeclaration;
928SyntaxNode memberDeclaration,
941public SyntaxToken GenerateUniqueNameAtSpanStart(SyntaxNode node)
AbstractUseAutoPropertyAnalyzer.cs (15)
28where TPropertyDeclaration : SyntaxNode
29where TFieldDeclaration : SyntaxNode
30where TVariableDeclarator : SyntaxNode
31where TExpression : SyntaxNode
38private static readonly ObjectPool<ConcurrentSet<SyntaxNode>> s_nodeSetPool = new(() => new());
39private static readonly ObjectPool<ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>>> s_fieldWriteLocationPool = new(() => new());
41private static readonly Func<IFieldSymbol, ConcurrentSet<SyntaxNode>> s_createFieldWriteNodeSet = _ => s_nodeSetPool.Allocate();
58protected static void AddFieldWrite(ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites, IFieldSymbol field, SyntaxNode node)
77protected abstract SyntaxNode GetFieldNode(TFieldDeclaration fieldDeclaration, TVariableDeclarator variableDeclarator);
80HashSet<string> fieldNames, ConcurrentSet<IFieldSymbol> ineligibleFields, SemanticModel semanticModel, SyntaxNode codeBlock, CancellationToken cancellationToken);
83HashSet<string> fieldNames, ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites, SemanticModel semanticModel, SyntaxNode codeBlock, CancellationToken cancellationToken);
289ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> nonConstructorFieldWrites,
320var fieldNode = GetFieldNode(result.FieldDeclaration, variableDeclarator);
AbstractUseConditionalExpressionCodeFixProvider.cs (10)
35where TStatementSyntax : SyntaxNode
37where TExpressionSyntax : SyntaxNode
56var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
69var changedRoot = nestedEditor.GetChangedRoot();
84var formattedRoot = Formatter.Format(changedRoot, SpecializedFormattingAnnotation, provider, formattingOptions, rules, cancellationToken);
107var condition = ifOperation.Condition.Syntax;
140Document document, SyntaxNode condition, SyntaxNode trueSyntax, SyntaxNode falseSyntax, CodeActionOptionsProvider fallbackOptions,
172var sourceSyntax = value.Syntax.WithoutTrivia();
AbstractUseNullPropagationCodeFixProvider.cs (30)
38where TExpressionSyntax : SyntaxNode
39where TStatementSyntax : SyntaxNode
49where TElementBindingArgumentListSyntax : SyntaxNode
51protected abstract bool TryGetBlock(SyntaxNode? node, [NotNullWhen(true)] out TStatementSyntax? block);
53protected abstract SyntaxNode PostProcessElseIf(TIfStatementSyntax ifStatement, TStatementSyntax newWhenTrueStatement);
73var root = editor.OriginalRoot;
77var conditionalExpressionOrIfStatement = root.FindNode(diagnostic.AdditionalLocations[0].SourceSpan, getInnermostNodeForTie: true);
94SyntaxNode conditionalExpression,
97var root = editor.OriginalRoot;
102var conditionalPart = root.FindNode(diagnostic.AdditionalLocations[1].SourceSpan, getInnermostNodeForTie: true);
103var whenPart = root.FindNode(diagnostic.AdditionalLocations[2].SourceSpan, getInnermostNodeForTie: true);
105conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
115conditionalExpression, out var currentCondition, out var currentWhenTrue, out var currentWhenFalse);
117var currentWhenPartToCheck = whenPart == whenTrue ? currentWhenTrue : currentWhenFalse;
130var newNode = CreateConditionalAccessExpression(
144var root = editor.OriginalRoot;
154SyntaxNode nodeToBeReplaced = ifStatement;
155SyntaxNode? replacementNode = null;
215TContainer container, SyntaxNode match) where TContainer : SyntaxNode
221var memberAccess = match.Parent;
222var nameNode = syntaxFacts.GetNameOfMemberAccessExpression(memberAccess);
244TContainer whenPart, SyntaxNode match, SyntaxNode matchParent) where TContainer : SyntaxNode
248var memberAccess = matchParent;
AbstractUseNullPropagationDiagnosticAnalyzer.cs (13)
41where TExpressionSyntax : SyntaxNode
42where TStatementSyntax : SyntaxNode
71protected abstract bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, INamedTypeSymbol? expressionTypeOpt, CancellationToken cancellationToken);
116conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
168syntaxFacts.GetPartsOfMemberAccessExpression(whenPartToCheck, out _, out var name);
244syntaxFacts.GetPartsOfBinaryExpression(condition, out var conditionLeft, out var conditionRight);
264var expression = syntaxFacts.GetExpressionOfInvocationExpression(invocation);
265var nameNode = syntaxFacts.IsIdentifierName(expression)
357syntaxFacts.GetPartsOfCastExpression(node, out var type, out var expression);
AddImport\AbstractAddImportFeatureService.cs (33)
32where TSimpleNameSyntax : SyntaxNode
34protected abstract bool CanAddImport(SyntaxNode node, bool allowInHiddenRegions, CancellationToken cancellationToken);
35protected abstract bool CanAddImportForMethod(string diagnosticId, ISyntaxFacts syntaxFacts, SyntaxNode node, out TSimpleNameSyntax nameNode);
36protected abstract bool CanAddImportForNamespace(string diagnosticId, SyntaxNode node, out TSimpleNameSyntax nameNode);
37protected abstract bool CanAddImportForDeconstruct(string diagnosticId, SyntaxNode node);
38protected abstract bool CanAddImportForGetAwaiter(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node);
39protected abstract bool CanAddImportForGetEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node);
40protected abstract bool CanAddImportForGetAsyncEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node);
41protected abstract bool CanAddImportForQuery(string diagnosticId, SyntaxNode node);
42protected abstract bool CanAddImportForType(string diagnosticId, SyntaxNode node, out TSimpleNameSyntax nameNode);
44protected abstract ISet<INamespaceSymbol> GetImportNamespacesInScope(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
45protected abstract ITypeSymbol GetDeconstructInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
46protected abstract ITypeSymbol GetQueryClauseInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
47protected abstract bool IsViableExtensionMethod(IMethodSymbol method, SyntaxNode expression, SemanticModel semanticModel, ISyntaxFacts syntaxFacts, CancellationToken cancellationToken);
49protected abstract Task<Document> AddImportAsync(SyntaxNode contextNode, INamespaceOrTypeSymbol symbol, Document document, AddImportPlacementOptions options, CancellationToken cancellationToken);
50protected abstract Task<Document> AddImportAsync(SyntaxNode contextNode, IReadOnlyList<string> nameSpaceParts, Document document, AddImportPlacementOptions options, CancellationToken cancellationToken);
52protected abstract bool IsAddMethodContext(SyntaxNode node, SemanticModel semanticModel);
55protected abstract (string description, bool hasExistingImport) GetDescription(Document document, AddImportPlacementOptions options, INamespaceOrTypeSymbol symbol, SemanticModel semanticModel, SyntaxNode root, CancellationToken cancellationToken);
86var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
87var node = root.FindToken(span.Start, findInsideTrivia: true)
122Document document, SemanticModel semanticModel, string diagnosticId, SyntaxNode node, int maxResults, ISymbolSearchService symbolSearchService,
602private static ITypeSymbol? GetAwaitInfo(SemanticModel semanticModel, ISyntaxFacts syntaxFactsService, SyntaxNode node)
604var awaitExpression = FirstAwaitExpressionAncestor(syntaxFactsService, node);
609var innerExpression = syntaxFactsService.GetExpressionOfAwaitExpression(awaitExpression);
614private static ITypeSymbol? GetCollectionExpressionType(SemanticModel semanticModel, ISyntaxFacts syntaxFactsService, SyntaxNode node)
616var collectionExpression = FirstForeachCollectionExpressionAncestor(syntaxFactsService, node);
626protected static bool AncestorOrSelfIsAwaitExpression(ISyntaxFacts syntaxFactsService, SyntaxNode node)
629private static SyntaxNode? FirstAwaitExpressionAncestor(ISyntaxFacts syntaxFactsService, SyntaxNode node)
630=> node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFacts>((n, syntaxFactsService) => syntaxFactsService.IsAwaitExpression(n), syntaxFactsService);
632private static SyntaxNode? FirstForeachCollectionExpressionAncestor(ISyntaxFacts syntaxFactsService, SyntaxNode node)
633=> node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFacts>((n, syntaxFactsService) => syntaxFactsService.IsExpressionOfForeach(n), syntaxFactsService);
ChangeSignature\AbstractChangeSignatureService.cs (51)
46public abstract SyntaxNode? FindNodeToUpdate(Document document, SyntaxNode node);
51public abstract Task<SyntaxNode> ChangeSignatureAsync(
54SyntaxNode potentiallyUpdatedNode,
55SyntaxNode originalNode,
62protected abstract T TransferLeadingWhitespaceTrivia<T>(T newArgument, SyntaxNode oldArgument) where T : SyntaxNode;
70protected abstract SyntaxNode CreateExplicitParamsArrayFromIndividualArguments(SeparatedSyntaxList<SyntaxNode> newArguments, int startingIndex, IParameterSymbol parameterSymbol);
72protected abstract SyntaxNode AddNameToArgument(SyntaxNode argument, string name);
170var syntax = await reference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
255var nodesToUpdate = new Dictionary<DocumentId, List<SyntaxNode>>();
256var definitionToUse = new Dictionary<SyntaxNode, ISymbol>();
338if (!TryGetNodeWithEditableSignatureOrAttributes(def, currentSolution, out var nodeToUpdate, out var documentId))
345nodesToUpdate.Add(documentId, new List<SyntaxNode>());
362if (!TryGetNodeWithEditableSignatureOrAttributes(location.Location, currentSolution, out var nodeToUpdate2, out var documentId2))
369nodesToUpdate.Add(documentId2, new List<SyntaxNode>());
378var updatedRoots = new Dictionary<DocumentId, SyntaxNode>();
383var root = await doc.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
391var newRoot = root.ReplaceNodes(nodes, (originalNode, potentiallyUpdatedNode) =>
403var annotatedNodes = newRoot.GetAnnotatedNodes<SyntaxNode>(syntaxAnnotation: changeSignatureFormattingAnnotation);
406var formattedRoot = Formatter.Format(
438private static void AddUpdatableNodeToDictionaries(Dictionary<DocumentId, List<SyntaxNode>> nodesToUpdate, DocumentId documentId, SyntaxNode nodeToUpdate, Dictionary<SyntaxNode, ISymbol> definitionToUse, ISymbol symbolWithSemanticParameters)
449private static bool TryGetNodeWithEditableSignatureOrAttributes(Location location, Solution solution, out SyntaxNode nodeToUpdate, out DocumentId documentId)
455var root = tree.GetRoot();
456var node = root.FindNode(location.SourceSpan, findInsideTrivia: true, getInnermostNodeForTie: true);
643where TNode : SyntaxNode
676Func<AddedParameter, T> createNewParameterMethod) where T : SyntaxNode
739protected ImmutableArray<SyntaxToken> GetSeparators<T>(SeparatedSyntaxList<T> arguments, int numSeparatorsToSkip) where T : SyntaxNode
753protected virtual async Task<SeparatedSyntaxList<SyntaxNode>> AddNewArgumentsToListAsync(
755SeparatedSyntaxList<SyntaxNode> newArguments,
764var fullList = ArrayBuilder<SyntaxNode>.GetInstance();
801var expression = await GenerateInferredCallsiteExpressionAsync(
817var argument = generateAttributeArguments
840var newArgument = CreateExplicitParamsArrayFromIndividualArguments(newArguments, indexInListOfPreexistingArguments, parameters[indexInListOfPreexistingArguments]);
846var newArgument = newArguments[indexInListOfPreexistingArguments];
870var newArgument = newArguments[indexInListOfPreexistingArguments];
906private async Task<SyntaxNode> GenerateInferredCallsiteExpressionAsync(
961protected ImmutableArray<SyntaxTrivia> GetPermutedDocCommentTrivia(SyntaxNode node, ImmutableArray<SyntaxNode> permutedParamNodes, LanguageServices services, LineFormattingOptions options)
976var structuredTrivia = trivia.GetStructure();
983var updatedNodeList = ArrayBuilder<SyntaxNode>.GetInstance();
987var content = structuredContent[i];
1006var newDocComments = Generator.DocumentationCommentTriviaWithUpdatedContent(trivia, updatedNodeList.ToImmutableAndFree());
1012var extraNodeList = ArrayBuilder<SyntaxNode>.GetInstance();
1021var extraDocComments = Generator.DocumentationCommentTrivia(
1035protected static bool IsParamsArrayExpandedHelper(ISymbol symbol, int argumentCount, bool lastArgumentIsNamed, SemanticModel semanticModel, SyntaxNode lastArgumentExpression, CancellationToken cancellationToken)
1063protected static int GetParameterIndexFromInvocationArgument(SyntaxNode argument, Document document, SemanticModel semanticModel, CancellationToken cancellationToken)
CodeFixes\Suppression\AbstractSuppressionCodeFixProvider.cs (22)
47protected abstract SyntaxTriviaList CreatePragmaDisableDirectiveTrivia(Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken);
48protected abstract SyntaxTriviaList CreatePragmaRestoreDirectiveTrivia(Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken);
50protected abstract SyntaxNode AddGlobalSuppressMessageAttribute(
51SyntaxNode newRoot,
60protected abstract SyntaxNode AddLocalSuppressMessageAttribute(
61SyntaxNode targetNode, ISymbol targetSymbol, INamedTypeSymbol suppressMessageAttribute, Diagnostic diagnostic);
65protected abstract bool IsAttributeListWithAssemblyAttributes(SyntaxNode node);
68protected abstract bool IsSingleAttributeInAttributeList(SyntaxNode attribute);
92protected abstract SyntaxNode GetContainingStatement(SyntaxToken token);
95protected SyntaxToken GetAdjustedTokenForPragmaDisable(SyntaxToken token, SyntaxNode root, TextLineCollection lines)
97var containingStatement = GetContainingStatement(token);
117private SyntaxToken GetAdjustedTokenForPragmaRestore(SyntaxToken token, SyntaxNode root, TextLineCollection lines, int indexOfLine)
119var containingStatement = GetContainingStatement(token);
261public SyntaxNode NodeWithTokens { get; set; }
262public SyntaxNode TargetMemberNode { get; set; }
274var root = await syntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
288var nodeWithTokens = GetNodeWithTokens(startToken, endToken, root);
295var targetMemberNode = syntaxFacts.GetContainingMemberDeclaration(root, nodeWithTokens.SpanStart);
344internal SyntaxNode GetNodeWithTokens(SyntaxToken startToken, SyntaxToken endToken, SyntaxNode root)
CodeFixes\Suppression\AbstractSuppressionCodeFixProvider.PragmaHelpers.cs (12)
34var nodeWithTokens = suppressionTargetInfo.NodeWithTokens;
35var root = await nodeWithTokens.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
51SyntaxNode newNode;
61var newRoot = root.ReplaceNode(nodeWithTokens, newNode);
107Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode,
159Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode,
211var nodeWithTokens = suppressionTargetInfo.NodeWithTokens;
222var root = nodeWithTokens.SyntaxTree.GetRoot();
224var subtreeRoot = root.FindNode(new TextSpan(previousOfStart.FullSpan.Start, spanEnd - previousOfStart.FullSpan.Start));
241var newSubtreeRoot = subtreeRoot.ReplaceTokens(new[] { startToken, previousOfStart, endToken, nextOfEnd },
CodeLens\CodeLensReferencesService.cs (8)
43private static async Task<T?> FindAsync<T>(Solution solution, DocumentId documentId, SyntaxNode syntaxNode,
90public async Task<ReferenceCount?> GetReferenceCountAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode, int maxSearchResults, CancellationToken cancellationToken)
121var node = GetEnclosingCodeElementNode(document, token, langServices, cancellationToken);
171private static SyntaxNode GetEnclosingCodeElementNode(Document document, SyntaxToken token, ICodeLensDisplayInfoService langServices, CancellationToken cancellationToken)
175var node = token.Parent;
203public async Task<ImmutableArray<ReferenceLocationDescriptor>?> FindReferenceLocationsAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode, CancellationToken cancellationToken)
260public Task<ImmutableArray<ReferenceMethodDescriptor>?> FindReferenceMethodsAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode, CancellationToken cancellationToken)
276public async Task<string> GetFullyQualifiedNameAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode,
CodeLens\ICodeLensReferencesService.cs (4)
23Task<ReferenceCount?> GetReferenceCountAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, int maxSearchResults, CancellationToken cancellationToken);
28Task<ImmutableArray<ReferenceLocationDescriptor>?> FindReferenceLocationsAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, CancellationToken cancellationToken);
33Task<ImmutableArray<ReferenceMethodDescriptor>?> FindReferenceMethodsAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, CancellationToken cancellationToken);
38Task<string?> GetFullyQualifiedNameAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, CancellationToken cancellationToken);
CodeRefactorings\AbstractRefactoringHelpersService.cs (61)
20where TExpressionSyntax : SyntaxNode
21where TArgumentSyntax : SyntaxNode
22where TExpressionStatementSyntax : SyntaxNode
26public abstract bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
29Document document, TextSpan selectionRaw, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
49Document document, TextSpan selectionRaw, ArrayBuilder<TSyntaxNode> relevantNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
56var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
145private static bool IsWantedTypeExpressionLike<TSyntaxNode>() where TSyntaxNode : SyntaxNode
165SyntaxNode root,
275CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
282var leftNode = tokenToLeft.Parent;
307SyntaxNode root,
310CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
316var rightNode = tokenToRightOrIn.Parent;
348SyntaxNode root,
351CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
353var selectionNode = root.FindNode(selectionTrimmed, getInnermostNodeForTie: true);
354var prevNode = selectionNode;
390protected virtual IEnumerable<SyntaxNode> ExtractNodesSimple(SyntaxNode? node, ISyntaxFactsService syntaxFacts)
408var localDeclarationStatement = syntaxFacts.IsLocalDeclarationStatement(node) ? node : node.Parent!;
418var declaredVariable = variables.First();
424var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(declaredVariable);
427var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
440var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(node);
443var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
455syntaxFacts.GetPartsOfAssignmentExpressionOrStatement(node, out _, out _, out var rightSide);
477protected virtual IEnumerable<SyntaxNode> ExtractNodesInHeader(SyntaxNode root, int location, IHeaderFactsService headerFacts)
480if (headerFacts.IsOnPropertyDeclarationHeader(root, location, out var propertyDeclaration))
484if (headerFacts.IsOnParameterHeader(root, location, out var parameter))
488if (headerFacts.IsOnMethodHeader(root, location, out var method))
492if (headerFacts.IsOnLocalFunctionHeader(root, location, out var localFunction))
496if (headerFacts.IsOnLocalDeclarationHeader(root, location, out var localDeclaration))
500if (headerFacts.IsOnIfStatementHeader(root, location, out var ifStatement))
504if (headerFacts.IsOnForeachHeader(root, location, out var foreachStatement))
507if (headerFacts.IsOnTypeHeader(root, location, out var typeDeclaration))
515CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
519var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
528var ancestor = token.Parent;
554IEnumerable<SyntaxNode> nodes, ArrayBuilder<TSyntaxNode> resultBuilder, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
561public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
564public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
567public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
570public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
573public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
576public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
579public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
582public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
585public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
CodeRefactorings\CodeRefactoringContextExtensions.cs (8)
41public static Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
44public static Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNode) where TSyntaxNode : SyntaxNode
47public static Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
50public static Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNodes) where TSyntaxNode : SyntaxNode
53public static Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
56public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this Document document, TextSpan span, bool allowEmptyNode, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
63this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
67this Document document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
CodeRefactorings\SyncNamespace\AbstractChangeNamespaceService.cs (52)
36public abstract Task<bool> CanChangeNamespaceAsync(Document document, SyntaxNode container, CancellationToken cancellationToken);
38public abstract Task<Solution> ChangeNamespaceAsync(Document document, SyntaxNode container, string targetNamespace, CodeCleanupOptionsProvider fallbackOptions, CancellationToken cancellationToken);
54public abstract bool TryGetReplacementReferenceSyntax(SyntaxNode reference, ImmutableArray<string> newNamespaceParts, ISyntaxFactsService syntaxFacts, [NotNullWhen(returnValue: true)] out SyntaxNode? old, [NotNullWhen(returnValue: true)] out SyntaxNode? @new);
59where TNamespaceDeclarationSyntax : SyntaxNode
60where TCompilationUnitSyntax : SyntaxNode
61where TMemberDeclarationSyntax : SyntaxNode
77protected abstract SyntaxList<TMemberDeclarationSyntax> GetMemberDeclarationsInContainer(SyntaxNode compilationUnitOrNamespaceDecl);
79protected abstract Task<SyntaxNode?> TryGetApplicableContainerFromSpanAsync(Document document, TextSpan span, CancellationToken cancellationToken);
81protected abstract string GetDeclaredNamespace(SyntaxNode container);
85/// <see cref="IChangeNamespaceService.CanChangeNamespaceAsync(Document, SyntaxNode, CancellationToken)"/>
92protected abstract Task<ImmutableArray<(DocumentId id, SyntaxNode container)>> GetValidContainersFromAllLinkedDocumentsAsync(Document document, SyntaxNode container, CancellationToken cancellationToken);
94private static bool IsValidContainer(SyntaxNode container)
100public override async Task<bool> CanChangeNamespaceAsync(Document document, SyntaxNode container, CancellationToken cancellationToken)
118var syntaxRoot = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
155var namespaceToRename = namespaces[i];
161static async Task<ImmutableArray<SyntaxNode>> GetTopLevelNamespacesAsync(Document document, CancellationToken cancellationToken)
163var syntaxRoot = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
175SyntaxNode container,
268protected async Task<ImmutableArray<(DocumentId, SyntaxNode)>> TryGetApplicableContainersFromAllDocumentsAsync(
280using var _1 = ArrayBuilder<(DocumentId, SyntaxNode)>.GetInstance(ids.Length, out var containers);
285var container = await TryGetApplicableContainerFromSpanAsync(document, span, cancellationToken).ConfigureAwait(false);
311protected static async Task<Solution> AnnotateContainersAsync(Solution solution, ImmutableArray<(DocumentId, SyntaxNode)> containers, CancellationToken cancellationToken)
324Document document, SyntaxNode container, CancellationToken cancellationToken)
368SyntaxNode container,
401private static ImmutableArray<SyntaxNode> CreateImports(Document document, ImmutableArray<string> names, bool withFormatterAnnotation)
404using var _ = ArrayBuilder<SyntaxNode>.GetInstance(names.Length, out var builder);
411private static SyntaxNode CreateImport(SyntaxGenerator syntaxGenerator, string name, bool withFormatterAnnotation)
413var import = syntaxGenerator.NamespaceImportDeclaration(name);
436var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
437var container = root.GetAnnotatedNodes(ContainerAnnotation).Single();
590ImmutableArray<SyntaxNode> containersToAddImports;
625var root = await documentWithAddedImports.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
684private static async Task<(Document, ImmutableArray<SyntaxNode>)> FixReferencesAsync(
694var root = editor.OriginalRoot;
695using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var containers);
702var dummyImport = CreateImport(generator, "Dummy", withFormatterAnnotation: false);
728var refNode = root.FindNode(refLoc.ReferenceLocation.Location.SourceSpan, findInsideTrivia: true, getInnermostNodeForTie: true);
734refNode, newNamespaceParts, syntaxFacts, out var oldNode, out var newNode))
743var container = addImportService.GetImportContainer(root, refNode, dummyImport, addImportsOptions);
747foreach (var container in containers)
800IEnumerable<SyntaxNode> importsToRemove,
822ImmutableArray<SyntaxNode> containers,
837foreach (var container in containers)
842var contextLocation = container is TNamespaceDeclarationSyntax
847var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
862private class SyntaxNodeSpanStartComparer : IComparer<SyntaxNode>
870public int Compare(SyntaxNode? x, SyntaxNode? y)
Completion\Providers\ImportCompletionProvider\AbstractImportCompletionProvider.cs (6)
30protected abstract bool IsFinalSemicolonOfUsingOrExtern(SyntaxNode directive, SyntaxToken token);
125var root = await tree.GetRootAsync(cancellationToken).ConfigureAwait(false);
126var addImportContextNode = root.FindToken(completionItem.Span.Start, findInsideTrivia: true).Parent;
139var importNode = CreateImport(document, containingNamespace);
142var rootWithImport = addImportService.AddImport(compilation, root, addImportContextNode!, importNode, generator, addImportsOptions, cancellationToken);
236private static SyntaxNode CreateImport(Document document, string namespaceName)
ConvertForEachToFor\AbstractConvertForEachToForCodeRefactoringProvider.cs (16)
28where TStatementSyntax : SyntaxNode
43protected abstract (SyntaxNode start, SyntaxNode end) GetForEachBody(TForEachStatement foreachStatement);
86ISemanticFactsService semanticFacts, SemanticModel model, SyntaxNode location, string baseName, CancellationToken cancellationToken)
89protected static SyntaxNode GetCollectionVariableName(
91ForEachInfo foreachInfo, SyntaxNode foreachCollectionExpression, CancellationToken cancellationToken)
105SyntaxNode type, SyntaxNode foreachCollectionExpression, SyntaxNode collectionVariable)
119var expression = foreachCollectionExpression.WithoutAnnotations(SimplificationHelpers.DontSimplifyAnnotation);
120var collectionStatement = generator.LocalDeclarationStatement(
132SyntaxGenerator generator, SyntaxNode type, SyntaxToken foreachVariable,
133ITypeSymbol castType, SyntaxNode collectionVariable, SyntaxToken indexVariable)
135var memberAccess = generator.ElementAccessExpression(
143var localDecl = generator.LocalDeclarationStatement(
424var newRoot = editor.GetChangedRoot();
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.cs (5)
46if (!ShouldOfferRefactoring(ifStatement, semanticModel, syntaxFactsService, out var analyzer, out var sections, out var target))
76[NotNullWhen(true)] out SyntaxNode? target)
245var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
250if (!ShouldOfferRefactoring(ifStatement, semanticModel, syntaxFactsService, out var analyzer, out var sections, out var target))
261var updatedRoot = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
ConvertToInterpolatedString\AbstractConvertConcatenationToInterpolatedStringRefactoringProvider.cs (26)
26where TExpressionSyntax : SyntaxNode
49var declarator = top.FirstAncestorOrSelf<SyntaxNode>(syntaxFacts.IsVariableDeclarator);
73using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var pieces);
106var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
107var interpolatedString = CreateInterpolatedString(document, isVerbatimStringLiteral, pieces);
116private static Task<Document> UpdateDocumentAsync(Document document, SyntaxNode root, SyntaxNode top, SyntaxNode interpolatedString)
118var newRoot = root.ReplaceNode(top, interpolatedString);
122protected SyntaxNode CreateInterpolatedString(
123Document document, bool isVerbatimStringLiteral, ArrayBuilder<SyntaxNode> pieces)
132using var _ = ArrayBuilder<SyntaxNode>.GetInstance(pieces.Count, out var content);
134foreach (var piece in pieces)
154var existingInterpolatedStringTextNode = content.Last();
155var newText = ConcatenateTextToTextNode(generator, existingInterpolatedStringTextNode, textWithoutQuotes, valueTextWithEscapedBraces);
171foreach (var contentPart in contentParts)
181var newText = ConcatenateTextToTextNode(generator, content.Last(), contentPart.GetFirstToken().Text, contentPart.GetFirstToken().ValueText);
197var otherExpression = syntaxFacts.IsParenthesizedExpression(piece)
210private static SyntaxNode ConcatenateTextToTextNode(SyntaxGenerator generator, SyntaxNode interpolatedStringTextNode, string textWithoutQuotes, string value)
223ArrayBuilder<SyntaxNode> pieces,
224SyntaxNode node,
234syntaxFacts.GetPartsOfBinaryExpression(node, out var left, out var right);
241ISyntaxFactsService syntaxFacts, SyntaxNode? expression,
ConvertTupleToStruct\AbstractConvertTupleToStructCodeRefactoringProvider.cs (41)
49where TExpressionSyntax : SyntaxNode
55where TArgumentSyntax : SyntaxNode
56where TTupleTypeSyntax : SyntaxNode
57where TTypeBlockSyntax : SyntaxNode
58where TNamespaceDeclarationSyntax : SyntaxNode
122SyntaxNode tupleExprOrTypeNode,
129var containingMember = GetContainingMember(context.Document, tupleExprOrTypeNode);
166private static SyntaxNode? GetContainingMember(Document document, SyntaxNode tupleExprOrTypeNode)
169return tupleExprOrTypeNode.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>((node, syntaxFacts) => syntaxFacts.IsMethodLevelMember(node), syntaxFacts);
185private static async Task<(SyntaxNode, INamedTypeSymbol)> TryGetTupleInfoAsync(
189var expressionOrType =
190await document.TryGetRelevantNodeAsync<TTupleTypeSyntax>(span, cancellationToken).ConfigureAwait(false) as SyntaxNode ??
247var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
249var newRoot = root.ReplaceToken(token, token.WithAdditionalAnnotations(RenameAnnotation.Create()));
264var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
267var container = tupleExprOrTypeNode.GetAncestor<TNamespaceDeclarationSyntax>() ?? root;
319SyntaxNode tupleExprOrTypeNode, INamedTypeSymbol tupleType,
357var syntaxRoot = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
375foreach (var container in nodesToUpdate)
411Document document, SyntaxNode tupleExprOrTypeNode,
510Document startingDocument, SyntaxNode tupleExprOrTypeNode, CancellationToken cancellationToken)
535Document document, SyntaxNode tupleExprOrTypeNode)
537var containingMember = GetContainingMember(document, tupleExprOrTypeNode);
545Document document, SyntaxNode tupleExprOrTypeNode, INamedTypeSymbol namedTypeSymbol,
549var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
561var container = tupleExprOrTypeNode.GetAncestor<TNamespaceDeclarationSyntax>() ?? root;
583var newRoot = editor.GetChangedRoot();
607SyntaxNode startingNode, INamedTypeSymbol tupleType, TNameSyntax fullyQualifiedStructName,
609SyntaxNode containerToUpdate, CancellationToken cancellationToken)
627SyntaxNode startingNode, INamedTypeSymbol tupleType, TNameSyntax qualifiedTypeName,
629SyntaxNode containingMember, CancellationToken cancellationToken)
683TNameSyntax qualifiedTypeName, SyntaxNode startingCreationNode, TTupleExpressionSyntax childCreation,
727var expr = generator.SyntaxFacts.GetExpressionOfArgument(argument);
740Document document, SyntaxEditor editor, SyntaxNode startingNode,
743SyntaxNode containingMember, CancellationToken cancellationToken)
773TNameSyntax qualifiedTypeName, SyntaxNode startingNode, TTupleTypeSyntax childTupleType)
877var valueNode = generator.IdentifierName(ValueName);
878var arguments = tupleType.TupleElements.SelectAsArray<IFieldSymbol, SyntaxNode>(
882var convertToTupleStatement = generator.ReturnStatement(
885var convertToStructStatement = generator.ReturnStatement(
DeclarationComputer.cs (12)
15internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, IEnumerable<SyntaxNode>? executableCodeBlocks, CancellationToken cancellationToken)
21internal static DeclarationInfo GetDeclarationInfo(SyntaxNode node, ISymbol? declaredSymbol, IEnumerable<SyntaxNode>? executableCodeBlocks)
23var codeBlocks = executableCodeBlocks?.Where(c => c != null).AsImmutableOrEmpty() ?? ImmutableArray<SyntaxNode>.Empty;
27internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, CancellationToken cancellationToken)
29return GetDeclarationInfo(model, node, getSymbol, (IEnumerable<SyntaxNode>?)null, cancellationToken);
32internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, SyntaxNode executableCodeBlock, CancellationToken cancellationToken)
37internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, CancellationToken cancellationToken, params SyntaxNode[] executableCodeBlocks)
42private static ISymbol? GetDeclaredSymbol(SemanticModel model, SyntaxNode node, bool getSymbol, CancellationToken cancellationToken)
EditAndContinue\AbstractEditAndContinueAnalyzer.cs (445)
70private readonly Action<SyntaxNode>? _testFaultInjector;
72protected AbstractEditAndContinueAnalyzer(Action<SyntaxNode>? testFaultInjector)
97internal abstract bool TryFindMemberDeclaration(SyntaxNode? root, SyntaxNode node, out OneOrMany<SyntaxNode> declarations);
119internal abstract SyntaxNode? TryGetDeclarationBody(SyntaxNode node);
124internal abstract bool IsDeclarationWithSharedBody(SyntaxNode declaration);
141internal abstract IEnumerable<SyntaxToken>? TryGetActiveTokens(SyntaxNode node);
149internal abstract (TextSpan envelope, TextSpan hole) GetActiveSpanEnvelope(SyntaxNode declaration);
155protected SyntaxNode? GetEncompassingAncestor(SyntaxNode? bodyOrMatchRoot)
162var root = GetEncompassingAncestorImpl(bodyOrMatchRoot);
167protected abstract SyntaxNode GetEncompassingAncestorImpl(SyntaxNode bodyOrMatchRoot);
179protected abstract SyntaxNode FindStatementAndPartner(SyntaxNode declarationBody, TextSpan span, SyntaxNode? partnerDeclarationBody, out SyntaxNode? partner, out int statementPart);
181private SyntaxNode FindStatement(SyntaxNode declarationBody, TextSpan span, out int statementPart)
188internal abstract SyntaxNode FindDeclarationBodyPartner(SyntaxNode leftDeclaration, SyntaxNode rightDeclaration, SyntaxNode leftNode);
195protected abstract SyntaxNode? FindEnclosingLambdaBody(SyntaxNode? container, SyntaxNode node);
204protected abstract IEnumerable<SyntaxNode> GetLambdaBodyExpressionsAndStatements(SyntaxNode lambdaBody);
206protected abstract SyntaxNode? TryGetPartnerLambdaBody(SyntaxNode oldBody, SyntaxNode newLambda);
208protected abstract Match<SyntaxNode> ComputeTopLevelMatch(SyntaxNode oldCompilationUnit, SyntaxNode newCompilationUnit);
209protected abstract Match<SyntaxNode> ComputeBodyMatch(SyntaxNode oldBody, SyntaxNode newBody, IEnumerable<KeyValuePair<SyntaxNode, SyntaxNode>>? knownMatches);
210protected abstract Match<SyntaxNode> ComputeTopLevelDeclarationMatch(SyntaxNode oldDeclaration, SyntaxNode newDeclaration);
211protected abstract IEnumerable<SequenceEdit> GetSyntaxSequenceEdits(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes);
218SyntaxNode oldStatement,
220SyntaxNode oldBody,
221SyntaxNode newBody,
222[NotNullWhen(true)] out SyntaxNode? newStatement);
224protected abstract bool TryGetEnclosingBreakpointSpan(SyntaxNode root, int position, out TextSpan span);
232protected abstract bool TryGetActiveSpan(SyntaxNode node, int statementPart, int minLength, out TextSpan span);
242protected abstract IEnumerable<(SyntaxNode statement, int statementPart)> EnumerateNearStatements(SyntaxNode statement);
244protected abstract bool StatementLabelEquals(SyntaxNode node1, SyntaxNode node2);
249protected abstract bool AreEquivalent(SyntaxNode left, SyntaxNode right);
258protected abstract bool AreEquivalentActiveStatements(SyntaxNode oldStatement, SyntaxNode newStatement, int statementPart);
260protected abstract bool IsNamespaceDeclaration(SyntaxNode node);
261protected abstract bool IsCompilationUnitWithGlobalStatements(SyntaxNode node);
262protected abstract bool IsGlobalStatement(SyntaxNode node);
263protected abstract TextSpan GetGlobalStatementDiagnosticSpan(SyntaxNode node);
268protected abstract IEnumerable<SyntaxNode> GetTopLevelTypeDeclarations(SyntaxNode compilationUnit);
276SyntaxNode? oldNode,
277SyntaxNode? newNode,
280IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
287protected abstract ImmutableArray<ISymbol> GetCapturedVariables(SemanticModel model, SyntaxNode memberBody);
292protected abstract IEnumerable<SyntaxNode> GetVariableUseSites(IEnumerable<SyntaxNode> roots, ISymbol localOrParameter, SemanticModel model, CancellationToken cancellationToken);
297protected abstract TextSpan? TryGetDiagnosticSpan(SyntaxNode node, EditKind editKind);
299internal TextSpan GetDiagnosticSpan(SyntaxNode node, EditKind editKind)
302protected virtual TextSpan GetBodyDiagnosticSpan(SyntaxNode node, EditKind editKind)
304var current = node.Parent;
322internal abstract TextSpan GetLambdaParameterDiagnosticSpan(SyntaxNode lambda, int ordinal);
325internal string GetDisplayName(SyntaxNode node, EditKind editKind = EditKind.Update)
372protected virtual string GetBodyDisplayName(SyntaxNode node, EditKind editKind = EditKind.Update)
374var current = node.Parent;
402protected abstract string? TryGetDisplayName(SyntaxNode node, EditKind editKind);
404protected virtual string GetSuspensionPointDisplayName(SyntaxNode node, EditKind editKind)
410protected abstract List<SyntaxNode> GetExceptionHandlingAncestors(SyntaxNode node, bool isNonLeaf);
411protected abstract void GetStateMachineInfo(SyntaxNode body, out ImmutableArray<SyntaxNode> suspensionPoints, out StateMachineKinds kinds);
412protected abstract TextSpan GetExceptionHandlingRegion(SyntaxNode node, out bool coversAllChildren);
414internal abstract void ReportTopLevelSyntacticRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, Match<SyntaxNode> match, Edit<SyntaxNode> edit, Dictionary<SyntaxNode, EditKind> editMap);
415internal abstract void ReportEnclosingExceptionHandlingRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, IEnumerable<Edit<SyntaxNode>> exceptionHandlingEdits, SyntaxNode oldStatement, TextSpan newStatementSpan);
416internal abstract void ReportOtherRudeEditsAroundActiveStatement(ArrayBuilder<RudeEditDiagnostic> diagnostics, Match<SyntaxNode> match, SyntaxNode oldStatement, SyntaxNode newStatement, bool isNonLeaf);
417internal abstract void ReportMemberBodyUpdateRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, SyntaxNode newMember, TextSpan? span);
418internal abstract void ReportInsertedMemberSymbolRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, ISymbol newSymbol, SyntaxNode newNode, bool insertingIntoExistingContainingType);
419internal abstract void ReportStateMachineSuspensionPointRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, SyntaxNode oldNode, SyntaxNode newNode);
421internal abstract bool IsLambda(SyntaxNode node);
422internal abstract bool IsInterfaceDeclaration(SyntaxNode node);
423internal abstract bool IsRecordDeclaration(SyntaxNode node);
428internal abstract bool IsNestedFunction(SyntaxNode node);
430internal abstract bool IsLocalFunction(SyntaxNode node);
431internal abstract bool IsClosureScope(SyntaxNode node);
432internal abstract bool ContainsLambda(SyntaxNode declaration);
433internal abstract SyntaxNode GetLambda(SyntaxNode lambdaBody);
434internal abstract IMethodSymbol GetLambdaExpressionSymbol(SemanticModel model, SyntaxNode lambdaExpression, CancellationToken cancellationToken);
435internal abstract SyntaxNode? GetContainingQueryExpression(SyntaxNode node);
436internal abstract bool QueryClauseLambdasTypeEquivalent(SemanticModel oldModel, SyntaxNode oldNode, SemanticModel newModel, SyntaxNode newNode, CancellationToken cancellationToken);
453internal abstract bool TryGetLambdaBodies(SyntaxNode node, [NotNullWhen(true)] out SyntaxNode? body1, out SyntaxNode? body2);
455internal abstract bool IsStateMachineMethod(SyntaxNode declaration);
461internal abstract SyntaxNode? TryGetContainingTypeDeclaration(SyntaxNode node);
469internal abstract bool TryGetAssociatedMemberDeclaration(SyntaxNode node, EditKind editKind, [NotNullWhen(true)] out SyntaxNode? declaration);
471internal abstract bool HasBackingField(SyntaxNode propertyDeclaration);
477internal abstract bool IsDeclarationWithInitializer(SyntaxNode declaration);
482internal abstract bool IsRecordPrimaryConstructorParameter(SyntaxNode declaration);
487internal abstract bool IsPropertyAccessorDeclarationMatchingPrimaryConstructorParameter(SyntaxNode declaration, INamedTypeSymbol newContainingType, out bool isFirstAccessor);
492internal abstract bool IsConstructorWithMemberInitializers(SyntaxNode declaration);
496internal abstract SyntaxNode EmptyCompilationUnit { get; }
526SyntaxNode oldRoot;
550var newRoot = await newTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
620using var _3 = ArrayBuilder<(SyntaxNode OldNode, SyntaxNode NewNode, TextSpan DiagnosticSpan)>.GetInstance(out var triviaEdits);
723private void ReportTopLevelSyntacticRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, EditScript<SyntaxNode> syntacticEdits, Dictionary<SyntaxNode, EditKind> editMap)
736internal virtual void ReportDeclarationInsertDeleteRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, SyntaxNode oldNode, SyntaxNode newNode, ISymbol oldSymbol, ISymbol newSymbol, EditAndContinueCapabilitiesGrantor capabilities, CancellationToken cancellationToken)
754internal Dictionary<SyntaxNode, EditKind> BuildEditMap(EditScript<SyntaxNode> editScript)
756var map = new Dictionary<SyntaxNode, EditKind>(editScript.Edits.Length);
793Match<SyntaxNode> topMatch,
817var node = TryGetNode(topMatch.OldRoot, oldStatementSpan.Start);
822foreach (var oldMember in oldMemberDeclarations)
824var hasPartner = topMatch.TryGetNewNode(oldMember, out var newMember);
827var oldBody = TryGetDeclarationBody(oldMember);
828var newBody = TryGetDeclarationBody(newMember);
838SyntaxNode? newStatement = null;
842if (TryGetTrackedStatement(newActiveStatementSpans, i, newText, newMember, newBody, out var trackedStatement, out var trackedStatementPart))
851var oldEnclosingLambdaBody = FindEnclosingLambdaBody(oldBody, oldMember.FindToken(adjustedOldStatementStart).Parent!);
852var newEnclosingLambdaBody = FindEnclosingLambdaBody(newBody, trackedStatement);
899public readonly SyntaxNode OldNode;
900public readonly SyntaxNode? NewTrackedNode;
901public readonly SyntaxNode? EnclosingLambdaBody;
904public ActiveNode(int activeStatementIndex, SyntaxNode oldNode, SyntaxNode? enclosingLambdaBody, int statementPart, SyntaxNode? newTrackedNode)
923public readonly Match<SyntaxNode>? Match;
924public readonly SyntaxNode? NewBody;
931private LambdaInfo(List<int>? activeNodeIndices, Match<SyntaxNode>? match, SyntaxNode? newLambdaBody)
938public LambdaInfo WithMatch(Match<SyntaxNode> match, SyntaxNode newLambdaBody)
943SyntaxNode oldDeclaration,
944SyntaxNode newDeclaration,
945SyntaxNode oldBody,
946SyntaxNode? newBody,
958out Func<SyntaxNode, SyntaxNode?>? syntaxMap,
1002Dictionary<SyntaxNode, LambdaInfo>? lazyActiveOrMatchedLambdas = null;
1010var oldStatementSyntax = FindStatement(oldBody, oldStatementSpan, out var statementPart);
1013var oldEnclosingLambdaBody = FindEnclosingLambdaBody(oldBody, oldStatementSyntax);
1016lazyActiveOrMatchedLambdas ??= new Dictionary<SyntaxNode, LambdaInfo>();
1027SyntaxNode? trackedNode = null;
1029if (TryGetTrackedStatement(newActiveStatementSpans, activeStatementIndex, newText, newDeclaration, newBody, out var newStatementSyntax, out var _))
1031var newEnclosingLambdaBody = FindEnclosingLambdaBody(newBody, newStatementSyntax);
1108var oldStatementSyntax = activeNode.OldNode;
1109var oldEnclosingLambdaBody = activeNode.EnclosingLambdaBody;
1114SyntaxNode? newStatementSyntax;
1115Match<SyntaxNode>? match;
1129var newEnclosingLambdaBody = oldLambdaInfo.NewBody;
1174var oldLambda = GetLambda(oldEnclosingLambdaBody);
1263private bool TryGetTrackedStatement(ImmutableArray<LinePositionSpan> activeStatementSpans, int index, SourceText text, SyntaxNode declaration, SyntaxNode body, [NotNullWhen(true)] out SyntaxNode? trackedStatement, out int trackedStatementPart)
1313Match<SyntaxNode> bodyMatch,
1314SyntaxNode oldStatementSyntax,
1315SyntaxNode? newStatementSyntax,
1355private BidirectionalMap<SyntaxNode> ComputeMap(
1356Match<SyntaxNode> bodyMatch,
1358ref Dictionary<SyntaxNode, LambdaInfo>? lazyActiveOrMatchedLambdas,
1361ArrayBuilder<Match<SyntaxNode>>? lambdaBodyMatches = null;
1376if (TryGetLambdaBodies(oldNode, out var oldLambdaBody1, out var oldLambdaBody2))
1378lambdaBodyMatches ??= ArrayBuilder<Match<SyntaxNode>>.GetInstance();
1379lazyActiveOrMatchedLambdas ??= new Dictionary<SyntaxNode, LambdaInfo>();
1381var newLambdaBody1 = TryGetPartnerLambdaBody(oldLambdaBody1, newNode);
1389var newLambdaBody2 = TryGetPartnerLambdaBody(oldLambdaBody2, newNode);
1409return BidirectionalMap<SyntaxNode>.FromMatch(bodyMatch);
1412var map = new Dictionary<SyntaxNode, SyntaxNode>();
1413var reverseMap = new Dictionary<SyntaxNode, SyntaxNode>();
1433return new BidirectionalMap<SyntaxNode>(map, reverseMap);
1436private Match<SyntaxNode> ComputeLambdaBodyMatch(
1437SyntaxNode oldLambdaBody,
1438SyntaxNode newLambdaBody,
1440[Out] Dictionary<SyntaxNode, LambdaInfo> activeOrMatchedLambdas,
1465private Match<SyntaxNode> ComputeBodyMatch(
1466SyntaxNode oldBody,
1467SyntaxNode newBody,
1473List<KeyValuePair<SyntaxNode, SyntaxNode>>? lazyKnownMatches = null;
1539internal virtual void ReportStateMachineSuspensionPointDeletedRudeEdit(ArrayBuilder<RudeEditDiagnostic> diagnostics, Match<SyntaxNode> match, SyntaxNode deletedSuspensionPoint)
1548internal virtual void ReportStateMachineSuspensionPointInsertedRudeEdit(ArrayBuilder<RudeEditDiagnostic> diagnostics, Match<SyntaxNode> match, SyntaxNode insertedSuspensionPoint, bool aroundActiveStatement)
1557private static void AddMatchingActiveNodes(ref List<KeyValuePair<SyntaxNode, SyntaxNode>>? lazyKnownMatches, IEnumerable<ActiveNode> activeNodes)
1564lazyKnownMatches ??= new List<KeyValuePair<SyntaxNode, SyntaxNode>>();
1570public ActiveStatementExceptionRegions GetExceptionRegions(SyntaxNode syntaxRoot, TextSpan unmappedActiveStatementSpan, bool isNonLeaf, CancellationToken cancellationToken)
1577private ActiveStatementExceptionRegions GetExceptionRegions(List<SyntaxNode> exceptionHandlingAncestors, SyntaxTree tree, CancellationToken cancellationToken)
1608private TextSpan GetDeletedNodeDiagnosticSpan(SyntaxNode deletedLambdaBody, Match<SyntaxNode> match, Dictionary<SyntaxNode, LambdaInfo> lambdaInfos)
1610var oldLambdaBody = deletedLambdaBody;
1613var oldParentLambdaBody = FindEnclosingLambdaBody(match.OldRoot, GetLambda(oldLambdaBody));
1628private TextSpan FindClosestActiveSpan(SyntaxNode statement, int statementPart)
1655internal TextSpan GetDeletedNodeActiveSpan(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode deletedNode)
1664if (forwardMap.TryGetValue(oldNode, out var newNode))
1673internal TextSpan GetDeletedNodeDiagnosticSpan(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode deletedNode)
1675var hasAncestor = TryGetMatchingAncestor(forwardMap, deletedNode, out var newAncestor);
1683private static bool TryGetMatchingAncestor(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode? oldNode, [NotNullWhen(true)] out SyntaxNode? newAncestor)
1701private IEnumerable<int> GetOverlappingActiveStatements(SyntaxNode declaration, ImmutableArray<UnmappedActiveStatement> statements)
1724protected static bool HasParentEdit(IReadOnlyDictionary<SyntaxNode, EditKind> editMap, Edit<SyntaxNode> edit)
1726SyntaxNode node;
1744protected static bool HasEdit(IReadOnlyDictionary<SyntaxNode, EditKind> editMap, SyntaxNode? node, EditKind editKind)
1756protected void AddAroundActiveStatementRudeDiagnostic(ArrayBuilder<RudeEditDiagnostic> diagnostics, SyntaxNode? oldNode, SyntaxNode? newNode, TextSpan newActiveStatementSpan)
1774protected void AddRudeUpdateAroundActiveStatement(ArrayBuilder<RudeEditDiagnostic> diagnostics, SyntaxNode newNode)
1783protected void AddRudeInsertAroundActiveStatement(ArrayBuilder<RudeEditDiagnostic> diagnostics, SyntaxNode newNode)
1792protected void AddRudeDeleteAroundActiveStatement(ArrayBuilder<RudeEditDiagnostic> diagnostics, SyntaxNode oldNode, TextSpan newActiveStatementSpan)
1803Match<SyntaxNode> match,
1804Func<SyntaxNode, bool> nodeSelector,
1805SyntaxNode oldActiveStatement,
1806SyntaxNode newActiveStatement,
1809where TSyntaxNode : SyntaxNode
1841private void ReportRudeEditsAndInserts(List<SyntaxNode?>? oldNodes, List<SyntaxNode?> newNodes, ArrayBuilder<RudeEditDiagnostic> diagnostics)
1847var newNode = newNodes[i];
1867List<SyntaxNode?> oldNodes,
1868List<SyntaxNode?> newNodes,
1870Match<SyntaxNode>? match,
1872where TSyntaxNode : SyntaxNode
1878var newNode = newNodes[newIndex];
1884SyntaxNode? oldNode;
1908else if (match.TryGetOldNode(newNode, out var partner) && comparer((TSyntaxNode)partner, (TSyntaxNode)newNode))
1930private static int IndexOfEquivalent<TSyntaxNode>(SyntaxNode newNode, List<SyntaxNode?> oldNodes, int startIndex, Func<TSyntaxNode, TSyntaxNode, bool> comparer)
1931where TSyntaxNode : SyntaxNode
1935var oldNode = oldNodes[i];
1945private static List<SyntaxNode?>? GetAncestors(SyntaxNode? root, SyntaxNode node, Func<SyntaxNode, bool> nodeSelector)
1947List<SyntaxNode?>? list = null;
1948var current = node;
1954list ??= new List<SyntaxNode?>();
1979Match<SyntaxNode> topMatch,
1980IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
1981[Out] ArrayBuilder<(SyntaxNode OldNode, SyntaxNode NewNode, TextSpan DiagnosticSpan)> triviaEdits,
1989using var _ = ArrayBuilder<(string filePath, int oldStartLine, int oldEndLine, int delta, SyntaxNode oldNode, SyntaxNode newNode)>.GetInstance(out var segments);
2033var currentSegment = (path: (string?)null, oldStartLine: 0, delta: 0, firstOldNode: (SyntaxNode?)null, firstNewNode: (SyntaxNode?)null);
2041var oldNode = currentSegment.firstOldNode;
2042var newNode = currentSegment.firstNewNode;
2388public readonly Dictionary<SyntaxNode, Func<SyntaxNode, SyntaxNode?>?> ChangedDeclarations;
2393ChangedDeclarations = new Dictionary<SyntaxNode, Func<SyntaxNode, SyntaxNode?>?>();
2403EditScript<SyntaxNode> editScript,
2404IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
2407IReadOnlyList<(SyntaxNode OldNode, SyntaxNode NewNode, TextSpan DiagnosticSpan)> triviaEdits,
2456Func<SyntaxNode, SyntaxNode?>? syntaxMap;
2482var newTypeDeclaration = GetSymbolDeclarationSyntax(newSymbol.DeclaringSyntaxReferences.First(r => r.SyntaxTree == edit.NewNode!.SyntaxTree), cancellationToken);
2712if (TryGetAssociatedMemberDeclaration(oldDeclaration, EditKind.Delete, out var oldAssociatedMemberDeclaration))
2840var oldBody = TryGetDeclarationBody(oldDeclaration);
2847var newBody = TryGetDeclarationBody(newDeclaration);
2903else if (TryGetAssociatedMemberDeclaration(newDeclaration, EditKind.Insert, out var newAssociatedMemberDeclaration) &&
3058var oldBody = TryGetDeclarationBody(oldDeclaration);
3061var newBody = TryGetDeclarationBody(newDeclaration);
3339(SyntaxNode? oldDeclaration, SyntaxNode? newDeclaration) GetSymbolDeclarationNodes(ISymbol? oldSymbol, ISymbol? newSymbol, SyntaxNode? oldNode, SyntaxNode? newNode)
3356private bool TryAddParameterInsertOrDeleteEdits(ArrayBuilder<SemanticEditInfo> semanticEdits, ISymbol containingSymbol, SemanticModel? otherModel, EditAndContinueCapabilitiesGrantor capabilities, Func<SyntaxNode, SyntaxNode?>? syntaxMap, EditScript<SyntaxNode> editScript, HashSet<ISymbol> processedSymbols, CancellationToken cancellationToken, out bool notSupportedByRuntime)
3386SyntaxNode otherContainingNode;
3387var containingNode = containingSymbol.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
3388if (editScript.Match.TryGetOldNode(containingNode, out var oldNode))
3392else if (editScript.Match.TryGetNewNode(containingNode, out var newNode))
3475private static void AddMemberOrAssociatedMemberSemanticEdits(ArrayBuilder<SemanticEditInfo> semanticEdits, SemanticEditKind editKind, ISymbol symbol, SymbolKey? containingSymbolKey, Func<SyntaxNode, SyntaxNode?>? syntaxMap, SymbolKey? partialType, HashSet<ISymbol>? processedSymbols, CancellationToken cancellationToken)
3569var oldRoot = oldModel.SyntaxTree.GetRoot(cancellationToken);
3570foreach (var oldTypeDeclaration in GetTopLevelTypeDeclarations(oldRoot))
3602var newRoot = newModel.SyntaxTree.GetRoot(cancellationToken);
3603foreach (var newTypeDeclaration in GetTopLevelTypeDeclarations(newRoot))
3688SyntaxNode? newNode,
4181SyntaxNode? newNode,
4183Match<SyntaxNode> topMatch,
4187Func<SyntaxNode, SyntaxNode?>? syntaxMap,
4237Match<SyntaxNode> topMatch,
4238Func<SyntaxNode, SyntaxNode?>? syntaxMap,
4280private static void AddParameterUpdateSemanticEdit(ArrayBuilder<SemanticEditInfo> semanticEdits, IParameterSymbol oldParameterSymbol, IParameterSymbol newParameterSymbol, Func<SyntaxNode, SyntaxNode?>? syntaxMap, bool reportDeleteAndInsertEdits, HashSet<ISymbol>? processedSymbols, CancellationToken cancellationToken)
4304private static void AddDelegateBeginInvokeEdit(ArrayBuilder<SemanticEditInfo> semanticEdits, INamedTypeSymbol delegateType, Func<SyntaxNode, SyntaxNode?>? syntaxMap, CancellationToken cancellationToken)
4319SyntaxNode? newNode,
4350SyntaxNode? newNode,
4380var node = newNode ?? GetRudeEditDiagnosticNode(newSymbol, cancellationToken);
4582var newNode = GetDeleteRudeEditDiagnosticNode(oldSymbol, newCompilation, cancellationToken);
4593private void ReportUpdateRudeEdit(ArrayBuilder<RudeEditDiagnostic> diagnostics, RudeEditKind rudeEdit, SyntaxNode newNode)
4602private void ReportUpdateRudeEdit(ArrayBuilder<RudeEditDiagnostic> diagnostics, RudeEditKind rudeEdit, ISymbol newSymbol, SyntaxNode? newNode, CancellationToken cancellationToken)
4604var node = newNode ?? GetRudeEditDiagnosticNode(newSymbol, cancellationToken);
4624private void ReportUpdateRudeEdit(ArrayBuilder<RudeEditDiagnostic> diagnostics, RudeEditKind rudeEdit, ISymbol oldSymbol, ISymbol newSymbol, SyntaxNode? newNode, Compilation newCompilation, CancellationToken cancellationToken)
4636private static SyntaxNode GetRudeEditDiagnosticNode(ISymbol symbol, CancellationToken cancellationToken)
4652private static SyntaxNode GetDeleteRudeEditDiagnosticNode(ISymbol oldSymbol, Compilation newCompilation, CancellationToken cancellationToken)
4675SyntaxNode newSyntax,
4709private void ReportTypeLayoutUpdateRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, ISymbol symbol, SyntaxNode syntax)
4777private Func<SyntaxNode, SyntaxNode?> CreateSyntaxMapForEquivalentNodes(SyntaxNode oldDeclaration, SyntaxNode newDeclaration)
4783private static Func<SyntaxNode, SyntaxNode?> CreateSyntaxMap(IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap)
4784=> newNode => reverseMap.TryGetValue(newNode, out var oldNode) ? oldNode : null;
4786private Func<SyntaxNode, SyntaxNode?>? CreateAggregateSyntaxMap(
4787IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseTopMatches,
4788IReadOnlyDictionary<SyntaxNode, Func<SyntaxNode, SyntaxNode?>?> changedDeclarations)
4798foreach (var newDeclaration in newDeclarations)
4810if (reverseTopMatches.TryGetValue(newDeclaration, out var oldDeclaration))
4828SyntaxNode? newDeclaration,
4829Func<SyntaxNode, SyntaxNode?>? syntaxMap,
4857Match<SyntaxNode> topMatch,
4903SyntaxNode? newDeclaration = null;
4935if (!isPrimaryRecordConstructor && topMatch.TryGetOldNode(newDeclaration, out var oldDeclaration))
5076var syntax = GetSymbolDeclarationSyntax(member.DeclaringSyntaxReferences.Single(), cancellationToken);
5117SyntaxNode oldMemberBody,
5119SyntaxNode newMemberBody,
5121IReadOnlyDictionary<SyntaxNode, LambdaInfo>? matchedLambdas,
5122BidirectionalMap<SyntaxNode> map,
5146ArrayBuilder<SyntaxNode>? lazyNewErroneousClauses = null;
5151lazyNewErroneousClauses ??= ArrayBuilder<SyntaxNode>.GetInstance();
5158foreach (var newQueryClause in from clause in lazyNewErroneousClauses
5199using var _2 = ArrayBuilder<SyntaxNode?>.GetInstance(newCaptures.Length, fillWithValue: null, out var newCapturesToClosureScopes);
5203using var _3 = ArrayBuilder<SyntaxNode?>.GetInstance(oldCaptures.Length, fillWithValue: null, out var oldCapturesToClosureScopes);
5244var newLambdaBody = newLambdaInfo.NewBody;
5276foreach (var useSite in GetVariableUseSites(GetLambdaBodyExpressionsAndStatements(newLambdaBody), newCapture, newModel, cancellationToken))
5319var containingTypeDeclaration = TryGetContainingTypeDeclaration(newMemberBody);
5376private IEnumerable<(SyntaxNode lambda, SyntaxNode lambdaBody1, SyntaxNode? lambdaBody2)> GetLambdaBodies(SyntaxNode body)
5378foreach (var node in body.DescendantNodesAndSelf())
5380if (TryGetLambdaBodies(node, out var body1, out var body2))
5387private bool CanAddNewLambda(SyntaxNode newLambda, EditAndContinueCapabilitiesGrantor capabilities, IReadOnlyDictionary<SyntaxNode, LambdaInfo>? matchedLambdas)
5413SyntaxNode lambdaBody,
5417ArrayBuilder<SyntaxNode?> newCapturesToClosureScopes,
5477private BitVector GetAccessedCaptures(SyntaxNode lambdaBody, SemanticModel model, ImmutableArray<ISymbol> captures, PooledDictionary<ISymbol, int> capturesIndex)
5481foreach (var expressionOrStatement in GetLambdaBodyExpressionsAndStatements(lambdaBody))
5514protected abstract SyntaxNode GetSymbolDeclarationSyntax(SyntaxReference reference, CancellationToken cancellationToken);
5527private static (SyntaxNode? Node, int Ordinal) GetParameterKey(IParameterSymbol parameter, CancellationToken cancellationToken)
5532var oldContainingLambdaSyntax = containingLambda.DeclaringSyntaxReferences.Single().GetSyntax(cancellationToken);
5541private static bool TryMapParameter((SyntaxNode? Node, int Ordinal) parameterKey, IReadOnlyDictionary<SyntaxNode, SyntaxNode> map, out (SyntaxNode? Node, int Ordinal) mappedParameterKey)
5543var containingLambdaSyntax = parameterKey.Node;
5552if (map.TryGetValue(containingLambdaSyntax, out var mappedContainingLambdaSyntax))
5566SyntaxNode oldMemberBody,
5569SyntaxNode newMemberBody,
5570BidirectionalMap<SyntaxNode> map,
5572[Out] ArrayBuilder<SyntaxNode?> newCapturesToClosureScopes, // {new capture index -> new closure scope}
5573[Out] ArrayBuilder<SyntaxNode?> oldCapturesToClosureScopes, // {old capture index -> old closure scope}
5609using var _1 = PooledDictionary<SyntaxNode, int>.GetInstance(out var oldLocalCapturesBySyntax);
5610using var _2 = PooledDictionary<(SyntaxNode? Node, int Ordinal), int>.GetInstance(out var oldParameterCapturesByLambdaAndOrdinal);
5655var newCaptureSyntax = newCapture.DeclaringSyntaxReferences.Single().GetSyntax(cancellationToken);
5658if (!map.Reverse.TryGetValue(newCaptureSyntax, out var mappedOldSyntax) ||
5737var oldScopeOpt = GetCapturedVariableScope(oldCapture, oldMemberBody, cancellationToken);
5738var newScopeOpt = GetCapturedVariableScope(newCapture, newMemberBody, cancellationToken);
5806var oldCaptureNode = entry.Key;
5809if (map.Forward.TryGetValue(oldCaptureNode, out var newCaptureNode))
5834SyntaxNode oldLambdaBody,
5836SyntaxNode newLambdaBody,
5843var newLambda = GetLambda(newLambdaBody);
5844var oldLambda = GetLambda(oldLambdaBody);
5909private SyntaxNode GetCapturedVariableScope(ISymbol localOrParameter, SyntaxNode memberBody, CancellationToken cancellationToken)
5920var result = localOrParameter.DeclaringSyntaxReferences.Single().GetSyntax(cancellationToken);
5928var node = localOrParameter.DeclaringSyntaxReferences.Single().GetSyntax(cancellationToken);
5941private static bool AreEquivalentClosureScopes(SyntaxNode oldScopeOpt, SyntaxNode newScopeOpt, IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap)
5948return reverseMap.TryGetValue(newScopeOpt, out var mappedScope) && mappedScope == oldScopeOpt;
5958SyntaxNode newBody,
5998private static SyntaxNode? TryGetNode(SyntaxNode root, int position)
6001internal static void AddNodes<T>(ArrayBuilder<SyntaxNode> nodes, SyntaxList<T> list)
6002where T : SyntaxNode
6010internal static void AddNodes<T>(ArrayBuilder<SyntaxNode> nodes, SeparatedSyntaxList<T>? list)
6011where T : SyntaxNode
6096internal void ReportTopLevelSyntacticRudeEdits(ArrayBuilder<RudeEditDiagnostic> diagnostics, EditScript<SyntaxNode> syntacticEdits, Dictionary<SyntaxNode, EditKind> editMap)
6099internal BidirectionalMap<SyntaxNode> ComputeMap(
6100Match<SyntaxNode> bodyMatch,
6102ref Dictionary<SyntaxNode, LambdaInfo>? lazyActiveOrMatchedLambdas,
6108internal Match<SyntaxNode> ComputeBodyMatch(
6109SyntaxNode oldBody,
6110SyntaxNode newBody,
EmbeddedLanguages\AbstractLanguageDetector.cs (8)
35protected abstract bool IsArgumentToWellKnownAPI(SyntaxToken token, SyntaxNode argumentNode, SemanticModel semanticModel, CancellationToken cancellationToken, out TOptions options);
42protected abstract bool TryGetOptions(SemanticModel semanticModel, ITypeSymbol exprType, SyntaxNode expr, CancellationToken cancellationToken, out TOptions options);
113SyntaxNode argument,
118var argumentList = argument.GetRequiredParent();
122foreach (var siblingArg in arguments)
126var expr = syntaxFacts.IsArgument(argument)
144protected static string? GetNameOfType(SyntaxNode? typeNode, ISyntaxFacts syntaxFacts)
158protected string? GetNameOfInvokedExpression(SyntaxNode invokedExpression)
EmbeddedLanguages\Json\LanguageServices\JsonLanguageDetector.cs (11)
135SyntaxNode argumentNode,
141var argumentList = argumentNode.GetRequiredParent();
142var invocationOrCreation = argumentList.Parent;
145var invokedExpression = syntaxFacts.GetExpressionOfInvocationExpression(invocationOrCreation);
168SemanticModel semanticModel, ITypeSymbol exprType, SyntaxNode expr, CancellationToken cancellationToken, out JsonOptions options)
184syntaxFacts.GetPartsOfBaseObjectCreationExpression(expr, out var argumentList, out var objectInitializer);
188foreach (var initializer in initializers)
192syntaxFacts.GetPartsOfNamedMemberInitializer(initializer, out var name, out var initExpr);
213SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
EncapsulateField\AbstractEncapsulateFieldService.cs (14)
34protected abstract Task<SyntaxNode> RewriteFieldNameAndAccessibilityAsync(string originalFieldName, bool makePrivate, Document document, SyntaxAnnotation declarationAnnotation, CodeAndImportGenerationOptionsProvider fallbackOptions, CancellationToken cancellationToken);
185var linkedRoot = await linkedDocument.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
186var linkedFieldNode = linkedRoot.FindNode(fieldDeclaration.Span);
192var updatedRoot = linkedRoot.ReplaceNode(linkedFieldNode, linkedFieldNode.WithAdditionalAnnotations(declarationAnnotation));
213var rewrittenFieldDeclaration = await RewriteFieldNameAndAccessibilityAsync(finalFieldName, markFieldPrivate, document, declarationAnnotation, fallbackOptions, cancellationToken).ConfigureAwait(false);
224var updatedLinkedRoot = await RewriteFieldNameAndAccessibilityAsync(finalFieldName, markFieldPrivate, linkedDocument, declarationAnnotation, fallbackOptions, cancellationToken).ConfigureAwait(false);
233var newRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
234var newDeclaration = newRoot.GetAnnotatedNodes<SyntaxNode>(declarationAnnotation).First();
342internal abstract IEnumerable<SyntaxNode> GetConstructorNodes(INamedTypeSymbol containingType);
410var assigned = !field.IsStatic
416var body = factory.ExpressionStatement(
429var value = !field.IsStatic
435var body = factory.ReturnStatement(
ExtractMethod\MethodExtractor.cs (7)
48protected abstract Task<OperationStatus> CheckTypeAsync(Document document, SyntaxNode contextNode, Location location, ITypeSymbol type, CancellationToken cancellationToken);
50protected abstract Task<(Document document, SyntaxToken methodName, SyntaxNode methodDefinition)> InsertNewLineBeforeLocalFunctionIfNecessaryAsync(Document document, SyntaxToken methodName, SyntaxNode methodDefinition, CancellationToken cancellationToken);
111var newRoot = semanticDocumentWithoutFinalFormatting.Root;
113var methodDefinition = newRoot.GetAnnotatedNodesAndTokens(methodAnnotation).FirstOrDefault().AsNode();
133var context = firstToken.Parent;
164SemanticDocument document, SyntaxNode contextNode, IEnumerable<VariableInfo> variables,
ExtractMethod\SelectionValidator.cs (22)
50public abstract IEnumerable<SyntaxNode> GetOuterReturnStatements(SyntaxNode commonRoot, IEnumerable<SyntaxNode> jumpsOutOfRegion);
51public abstract bool IsFinalSpanSemanticallyValidSpan(SyntaxNode node, TextSpan textSpan, IEnumerable<SyntaxNode> returnStatements, CancellationToken cancellationToken);
52public abstract bool ContainsNonReturnExitPointsStatements(IEnumerable<SyntaxNode> jumpsOutOfRegion);
55SemanticModel semanticModel, TextSpan textSpan, Tuple<SyntaxNode, SyntaxNode> range, CancellationToken cancellationToken)
101protected static Tuple<SyntaxNode, SyntaxNode> GetStatementRangeContainingSpan<T>(
103SyntaxNode root, TextSpan textSpan, CancellationToken cancellationToken) where T : SyntaxNode
110var commonRoot = token1.GetCommonRoot(token2).GetAncestorOrThis<T>() ?? root;
156return new Tuple<SyntaxNode, SyntaxNode>(firstStatement, lastStatement);
162protected static Tuple<SyntaxNode, SyntaxNode> GetStatementRangeContainedInSpan<T>(
163SyntaxNode root, TextSpan textSpan, CancellationToken cancellationToken) where T : SyntaxNode
170var commonRoot = token1.GetCommonRoot(token2).GetAncestorOrThis<T>() ?? root;
195return new Tuple<SyntaxNode, SyntaxNode>(firstStatement, lastStatement);
FormatterHelper.cs (11)
32public static SyntaxNode Format(SyntaxNode node, ISyntaxFormatting syntaxFormattingService, SyntaxFormattingOptions options, CancellationToken cancellationToken)
35public static SyntaxNode Format(SyntaxNode node, TextSpan spanToFormat, ISyntaxFormatting syntaxFormattingService, SyntaxFormattingOptions options, CancellationToken cancellationToken)
46public static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, ISyntaxFormatting syntaxFormattingService, SyntaxFormattingOptions options, IEnumerable<AbstractFormattingRule>? rules, CancellationToken cancellationToken)
49internal static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan> spans, ISyntaxFormatting syntaxFormattingService, SyntaxFormattingOptions options, IEnumerable<AbstractFormattingRule>? rules, CancellationToken cancellationToken)
52internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan> spans, ISyntaxFormatting syntaxFormattingService, SyntaxFormattingOptions options, IEnumerable<AbstractFormattingRule>? rules, CancellationToken cancellationToken)
55internal static IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan> spans, ISyntaxFormatting syntaxFormattingService, SyntaxFormattingOptions options, IEnumerable<AbstractFormattingRule>? rules, CancellationToken cancellationToken)
65public static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, ISyntaxFormatting syntaxFormattingService, SyntaxFormattingOptions options, CancellationToken cancellationToken)
GenerateEqualsAndGetHashCodeFromMembers\GenerateEqualsAndGetHashCodeFromMembersCodeRefactoringProvider.cs (8)
80var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
84if (!helpers.IsOnTypeHeader(root, textSpan.Start, out var typeDeclaration) &&
187var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
188var typeDeclaration = syntaxFacts.GetContainingTypeDeclaration(root, textSpan.Start);
202Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> selectedMembers,
242Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
252Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
291Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
GenerateMember\GenerateConstructor\AbstractGenerateConstructorService.cs (9)
27where TExpressionSyntax : SyntaxNode
30protected abstract bool IsSimpleNameGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
31protected abstract bool IsConstructorInitializerGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
32protected abstract bool IsImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
34protected abstract bool TryInitializeImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument> arguments, out INamedTypeSymbol typeToGenerateIn);
35protected abstract bool TryInitializeSimpleNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument> arguments, out INamedTypeSymbol typeToGenerateIn);
36protected abstract bool TryInitializeConstructorInitializerGeneration(SemanticDocument document, SyntaxNode constructorInitializer, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument> arguments, out INamedTypeSymbol typeToGenerateIn);
37protected abstract bool TryInitializeSimpleAttributeNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument> arguments, out INamedTypeSymbol typeToGenerateIn);
79public async Task<ImmutableArray<CodeAction>> GenerateConstructorAsync(Document document, SyntaxNode node, CodeAndImportGenerationOptionsProvider fallbackOptions, CancellationToken cancellationToken)
GenerateMember\GenerateParameterizedMember\AbstractGenerateConversionService.cs (6)
21where TExpressionSyntax : SyntaxNode
24protected abstract bool IsImplicitConversionGeneration(SyntaxNode node);
25protected abstract bool IsExplicitConversionGeneration(SyntaxNode node);
26protected abstract bool TryInitializeImplicitConversionState(SemanticDocument document, SyntaxNode expression, ISet<TypeKind> classInterfaceModuleStructTypes, CancellationToken cancellationToken, out SyntaxToken identifierToken, out IMethodSymbol methodSymbol, out INamedTypeSymbol typeToGenerateIn);
27protected abstract bool TryInitializeExplicitConversionState(SemanticDocument document, SyntaxNode expression, ISet<TypeKind> classInterfaceModuleStructTypes, CancellationToken cancellationToken, out SyntaxToken identifierToken, out IMethodSymbol methodSymbol, out INamedTypeSymbol typeToGenerateIn);
31SyntaxNode node,
GenerateMember\GenerateVariable\AbstractGenerateVariableService.cs (6)
26where TExpressionSyntax : SyntaxNode
32protected abstract bool IsExplicitInterfaceGeneration(SyntaxNode node);
33protected abstract bool IsIdentifierNameGeneration(SyntaxNode node);
35protected abstract bool TryInitializeExplicitInterfaceState(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken identifierToken, out IPropertySymbol propertySymbol, out INamedTypeSymbol typeToGenerateIn);
38protected abstract bool TryConvertToLocalDeclaration(ITypeSymbol type, SyntaxToken identifierToken, SemanticModel semanticModel, CancellationToken cancellationToken, out SyntaxNode newRoot);
42SyntaxNode node,
GenerateType\AbstractGenerateTypeService.cs (13)
33where TExpressionSyntax : SyntaxNode
34where TTypeDeclarationSyntax : SyntaxNode
35where TArgumentSyntax : SyntaxNode
64Solution updatedSolution, SyntaxNode modifiedRoot, Document document, TSimpleNameSyntax simpleName, string includeUsingsOrImports, AddImportPlacementOptionsProvider fallbackOptions, CancellationToken cancellationToken);
70public abstract Task<(INamespaceSymbol, INamespaceOrTypeSymbol, Location)> GetOrGenerateEnclosingNamespaceSymbolAsync(INamedTypeSymbol namedTypeSymbol, string[] containers, Document selectedDocument, SyntaxNode selectedDocumentRoot, CancellationToken cancellationToken);
74SyntaxNode node,
107SyntaxNode node,
146private static bool CanGenerateIntoContainingNamespace(SemanticDocument semanticDocument, SyntaxNode node, CancellationToken cancellationToken)
153var decl = declarationService.GetDeclarations(containingNamespace)
156.FirstOrDefault(node.GetAncestorsOrThis<SyntaxNode>().Contains);
165SyntaxNode node,
191IEnumerable<SyntaxNode> typeArguments,
204var argument = i < arguments.Count ? arguments[i] : null;
Highlighting\Keywords\AbstractKeywordHighlighter.cs (9)
14internal abstract class AbstractKeywordHighlighter<TNode> : AbstractKeywordHighlighter where TNode : SyntaxNode
16protected sealed override bool IsHighlightableNode(SyntaxNode node) => node is TNode;
18protected sealed override void AddHighlightsForNode(SyntaxNode node, List<TextSpan> highlights, CancellationToken cancellationToken)
29protected abstract bool IsHighlightableNode(SyntaxNode node);
32SyntaxNode root, int position, List<TextSpan> highlights, CancellationToken cancellationToken)
41for (var parent = token.Parent; parent != null; parent = parent.Parent)
72protected abstract void AddHighlightsForNode(SyntaxNode node, List<TextSpan> highlights, CancellationToken cancellationToken);
77internal static void AddTouchingTokens(SyntaxNode root, int position, List<SyntaxToken> tokens)
83private static void AddTouchingTokens(SyntaxNode root, int position, List<SyntaxToken> tokens, bool findInsideTrivia)
ImplementAbstractClass\ImplementAbstractClassData.cs (14)
28private readonly SyntaxNode _classNode;
36Document document, ImplementTypeGenerationOptions options, SyntaxNode classNode, SyntaxToken classIdentifier,
50Document document, SyntaxNode classNode, SyntaxToken classIdentifier, ImplementTypeGenerationOptions options, CancellationToken cancellationToken)
80Document document, SyntaxNode classNode, SyntaxToken classIdentifier, ImplementTypeGenerationOptions options, CancellationToken cancellationToken)
99var classNodeToAddMembersTo = _classNode;
115var updatedClassNode = info.Service.AddMembers(
121var root = await _document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
122var newRoot = root.ReplaceNode(_classNode, updatedClassNode);
183var body = throughMember == null
251Func<SyntaxNode, SyntaxNode, SyntaxNode> createAddOrRemoveHandler)
257var throughExpression = generator.CreateDelegateThroughExpression(@event, throughMember);
258var statement = generator.ExpressionStatement(createAddOrRemoveHandler(
ImplementInterface\AbstractImplementInterfaceService.cs (10)
34protected abstract bool TryInitializeState(Document document, SemanticModel model, SyntaxNode interfaceNode, CancellationToken cancellationToken, out SyntaxNode classOrStructDecl, out INamedTypeSymbol classOrStructType, out IEnumerable<INamedTypeSymbol> interfaceTypes);
37protected abstract SyntaxNode AddCommentInsideIfStatement(SyntaxNode ifDisposingStatement, SyntaxTriviaList trivia);
38protected abstract SyntaxNode CreateFinalizer(SyntaxGenerator generator, INamedTypeSymbol classType, string disposeMethodDisplayString);
41Document document, ImplementTypeGenerationOptions options, SyntaxNode node, CancellationToken cancellationToken)
63public ImmutableArray<CodeAction> GetCodeActions(Document document, ImplementTypeGenerationOptions options, SemanticModel model, SyntaxNode node, CancellationToken cancellationToken)
179protected static TNode AddComment<TNode>(SyntaxGenerator g, string comment, TNode node) where TNode : SyntaxNode
182protected static TNode AddComments<TNode>(SyntaxGenerator g, string comment1, string comment2, TNode node) where TNode : SyntaxNode
185protected static TNode AddComments<TNode>(SyntaxGenerator g, string[] comments, TNode node) where TNode : SyntaxNode
InitializeParameter\AbstractInitializeMemberFromParameterCodeRefactoringProviderMemberCreation.cs (33)
39where TTypeDeclarationSyntax : SyntaxNode
40where TParameterSyntax : SyntaxNode
41where TStatementSyntax : SyntaxNode
42where TExpressionSyntax : SyntaxNode
44protected abstract SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement);
47protected abstract SyntaxNode? GetAccessorBody(IMethodSymbol accessor, CancellationToken cancellationToken);
48protected abstract SyntaxNode RemoveThrowNotImplemented(SyntaxNode propertySyntax);
52Document document, SyntaxNode functionDeclaration, IMethodSymbol method, IBlockOperation? blockStatementOpt,
53ImmutableArray<SyntaxNode> listOfParameterNodes, TextSpan parameterSpan,
63SyntaxNode constructorDeclaration,
109SyntaxNode constructorDeclaration,
161SyntaxNode constructorDeclaration,
196SyntaxNode constructorDeclaration,
246SyntaxNode functionDeclaration,
379SyntaxNode constructorDeclaration,
393var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
394var nodesToTrack = new List<SyntaxNode> { constructorDeclaration };
398var trackedRoot = root.TrackNodes(nodesToTrack);
409var currentRoot = await currentDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
411var currentConstructorDeclaration = currentRoot.GetCurrentNode(constructorDeclaration);
445SyntaxNode constructorDeclaration,
454var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
508var propertySyntax = await declarationService.GetDeclarations(fieldOrProperty)[0].GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
509var withoutThrowNotImplemented = RemoveThrowNotImplemented(propertySyntax);
522var otherRoot = await propertySyntax.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
533SyntaxNode constructorDeclaration,
557var statementToAddAfter = TryGetStatementToAddInitializationAfter(parameter, blockStatement);
564SyntaxNode typeDeclaration, CancellationToken cancellationToken)
575var symbolSyntax = symbol.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
619private SyntaxNode? TryGetStatementToAddInitializationAfter(
807using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var accessors);
821foreach (var accessorBody in accessors)
InitializeParameter\AbstractInitializeParameterCodeRefactoringProvider.cs (19)
29where TTypeDeclarationSyntax : SyntaxNode
30where TParameterSyntax : SyntaxNode
31where TStatementSyntax : SyntaxNode
32where TExpressionSyntax : SyntaxNode
34protected abstract bool IsFunctionDeclaration(SyntaxNode node);
37protected abstract SyntaxNode GetBody(SyntaxNode functionDeclaration);
41SyntaxNode functionDeclaration,
44ImmutableArray<SyntaxNode> listOfParameterNodes,
53SyntaxNode functionDeclaration,
60SyntaxEditor editor, SyntaxNode functionDeclaration, bool returnsVoid,
61SyntaxNode? statementToAddAfter, TStatementSyntax statement);
74var functionDeclaration = selectedParameter.FirstAncestorOrSelf<SyntaxNode>(IsFunctionDeclaration);
113using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var listOfPotentiallyValidParametersNodes);
114foreach (var parameterNode in parameterNodes)
136SyntaxNode parameterNode,
148SyntaxNode functionDeclaration, SemanticModel semanticModel, ISyntaxFactsService syntaxFacts,
153var functionBody = GetBody(functionDeclaration);
IntroduceParameter\AbstractIntroduceParameterCodeRefactoringProvider.cs (23)
29where TExpressionSyntax : SyntaxNode
41protected abstract SyntaxNode GenerateExpressionFromOptionalParameter(IParameterSymbol parameterSymbol);
42protected abstract SyntaxNode UpdateArgumentListSyntax(SyntaxNode argumentList, SeparatedSyntaxList<SyntaxNode> arguments);
43protected abstract SyntaxNode? GetLocalDeclarationFromDeclarator(SyntaxNode variableDecl);
61var containingMethod = expression.FirstAncestorOrSelf<SyntaxNode>(node => generator.GetParameterListNode(node) is not null);
113private static bool IsValidExpression(SyntaxNode expression, ISyntaxFactsService syntaxFacts)
128var invalidNode = expression.FirstAncestorOrSelf<SyntaxNode>(node => syntaxFacts.IsAttributeArgument(node) || syntaxFacts.IsParameter(node));
138TExpressionSyntax expression, IMethodSymbol methodSymbol, SyntaxNode containingMethod, CodeGenerationOptionsProvider fallbackOptions,
194foreach (var variable in variablesInExpression)
230IMethodSymbol methodSymbol, SyntaxNode containingMethod, bool allOccurrences, IntroduceParameterCodeActionKind selectedCodeAction,
244var newRoot = await rewriter.RewriteDocumentAsync(compilation, document, invocations, cancellationToken).ConfigureAwait(false);
255protected static async Task<Dictionary<Document, List<SyntaxNode>>> FindCallSitesAsync(
258var methodCallSites = new Dictionary<Document, List<SyntaxNode>>();
274methodCallSites.Add(document, new List<SyntaxNode>());
282var reference = refLocation.Location.FindNode(cancellationToken).GetRequiredParent();
287var invocationOrCreation = reference as TObjectCreationExpressionSyntax ?? (SyntaxNode?)(reference as TInvocationExpressionSyntax);
293list = new List<SyntaxNode>();
IntroduceParameter\IntroduceParameterDocumentRewriter.cs (60)
32private readonly SyntaxNode _containerMethod;
42SyntaxNode containingMethod,
60public async Task<SyntaxNode> RewriteDocumentAsync(Compilation compilation, Document document, List<SyntaxNode> invocations, CancellationToken cancellationToken)
117private bool ShouldRemoveVariableDeclaratorContainingExpression([NotNullWhen(true)] out string? varDeclName, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
119var declarator = _expression?.Parent?.Parent;
154var parameterList = _syntaxFacts.GetParameterList(_containerMethod);
236private async Task<SyntaxNode> ModifyDocumentInvocationsTrampolineOverloadAndIntroduceParameterAsync(Compilation compilation, Document currentDocument,
237List<SyntaxNode> invocations, int insertionIndex, CancellationToken cancellationToken)
240var root = await currentDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
253foreach (var invocation in invocations)
255var argumentListSyntax = _syntaxFacts.GetArgumentListOfInvocationExpression(invocation);
271var newMethodNode = _actionKind is IntroduceParameterCodeActionKind.Trampoline
278var parameter = _generator.ParameterDeclaration(parameterName, _generator.TypeExpression(parameterType));
315SyntaxNode GenerateNewArgumentListSyntaxForTrampoline(Compilation compilation, SemanticModel invocationSemanticModel,
316Dictionary<IParameterSymbol, int> parameterToArgumentMap, SyntaxNode currentArgumentListSyntax,
317SyntaxNode argumentListSyntax, SyntaxNode invocation, ImmutableArray<IParameterSymbol> validParameters,
324var requiredArguments = new List<SyntaxNode>();
334var conditionalRoot = _syntaxFacts.GetRootConditionalAccessExpression(invocation);
336var newMethodInvocation = GenerateNewMethodInvocation(invocation, requiredArguments, newMethodIdentifier);
338SeparatedSyntaxList<SyntaxNode> allArguments;
347var expressionsWithConditionalAccessors = conditionalRoot.ReplaceNode(invocation, newMethodInvocation);
362private SyntaxNode GenerateNewMethodInvocation(SyntaxNode invocation, List<SyntaxNode> arguments, string newMethodIdentifier)
364var methodName = _generator.IdentifierName(newMethodIdentifier);
365var fullExpression = _syntaxFacts.GetExpressionOfInvocationExpression(invocation);
368var receiverExpression = _syntaxFacts.GetExpressionOfMemberAccessExpression(fullExpression);
399private async Task<SyntaxNode> ExtractMethodAsync(ImmutableArray<IParameterSymbol> validParameters, string newMethodIdentifier, SyntaxGenerator generator, CancellationToken cancellationToken)
402var returnStatement = generator.ReturnStatement(_expression.WithoutTrivia());
404var newMethodDeclaration = await CreateMethodDeclarationAsync(returnStatement,
431private async Task<SyntaxNode> GenerateNewMethodOverloadAsync(int insertionIndex, SyntaxGenerator generator, CancellationToken cancellationToken)
438var memberName = _methodSymbol.IsGenericMethod
441var invocation = generator.InvocationExpression(memberName, arguments);
443var newStatement = _methodSymbol.ReturnsVoid
447var newMethodDeclaration = await CreateMethodDeclarationAsync(newStatement,
452private async Task<SyntaxNode> CreateMethodDeclarationAsync(SyntaxNode newStatement, ImmutableArray<IParameterSymbol>? validParameters,
461var newMethodDeclaration = info.Service.CreateMethodDeclaration(newMethod, CodeGenerationDestination.Unspecified, info, cancellationToken);
492private async Task<SyntaxNode> ModifyDocumentInvocationsAndIntroduceParameterAsync(Compilation compilation, Document document, int insertionIndex,
493List<SyntaxNode> invocations, CancellationToken cancellationToken)
495var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
501foreach (var invocation in invocations)
505var argumentListSyntax = invocation is TObjectCreationExpressionSyntax
539var parameter = _generator.ParameterDeclaration(name: parameterName, type:
555SeparatedSyntaxList<SyntaxNode> updatedInvocationArguments)
562var updatedInvocationArgument = updatedInvocationArguments[index];
563var argumentExpression = _syntaxFacts.GetExpressionOfArgument(updatedInvocationArgument);
564var parenthesizedArgumentExpression = editor.Generator.AddParentheses(argumentExpression, includeElasticTrivia: false);
569var generatedExpression = _service.GenerateExpressionFromOptionalParameter(mappedParameter);
570var parenthesizedGeneratedExpression = editor.Generator.AddParentheses(generatedExpression, includeElasticTrivia: false);
582private SeparatedSyntaxList<SyntaxNode> AddArgumentToArgumentList(
583SeparatedSyntaxList<SyntaxNode> invocationArguments, SyntaxNode newArgumentExpression,
586var argument = named
593SeparatedSyntaxList<SyntaxNode> invocationArguments, int methodInsertionIndex,
597foreach (var invocationArgument in invocationArguments)
619Dictionary<IParameterSymbol, int> mapping, SeparatedSyntaxList<SyntaxNode> arguments,
657if (ShouldRemoveVariableDeclaratorContainingExpression(out _, out var localDeclaration))
J\s\src\Analyzers\Core\Analyzers\AddAccessibilityModifiers\IAddAccessibilityModifiersService.cs\IAddAccessibilityModifiersService.cs (1)
19SyntaxNode member,
MetadataAsSource\AbstractMetadataAsSourceService+CompatAbstractMetadataFormattingRule.cs (8)
21public sealed override void AddSuppressOperations(List<SuppressOperation> list, SyntaxNode node, in NextSuppressOperationAction nextOperation)
29public sealed override void AddAnchorIndentationOperations(List<AnchorIndentationOperation> list, SyntaxNode node, in NextAnchorIndentationOperationAction nextOperation)
37public sealed override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
45public sealed override void AddAlignTokensOperations(List<AlignTokensOperation> list, SyntaxNode node, in NextAlignTokensOperationAction nextOperation)
76public virtual void AddSuppressOperationsSlow(List<SuppressOperation> list, SyntaxNode node, ref NextSuppressOperationAction nextOperation)
82public virtual void AddAnchorIndentationOperationsSlow(List<AnchorIndentationOperation> list, SyntaxNode node, ref NextAnchorIndentationOperationAction nextOperation)
88public virtual void AddIndentBlockOperationsSlow(List<IndentBlockOperation> list, SyntaxNode node, ref NextIndentBlockOperationAction nextOperation)
94public virtual void AddAlignTokensOperationsSlow(List<AlignTokensOperation> list, SyntaxNode node, ref NextAlignTokensOperationAction nextOperation)
PullMemberUp\MembersPuller.cs (25)
105var destinationSyntaxNode = await codeGenerationService.FindMostRelevantNameSpaceOrTypeDeclarationAsync(
120var destinationWithMembersAdded = info.Service.AddMembers(destinationSyntaxNode, symbolsToPullUp, info, cancellationToken);
127foreach (var declaration in symbolToDeclarationsMap[analysisResult.Member])
204SyntaxNode memberDeclaration,
233SyntaxNode eventDeclaration,
238var declaration = editor.Generator.GetDeclaration(eventDeclaration);
262var publicAndNonStaticSyntax = codeGenerationService.CreateEventDeclaration(publicAndNonStaticSymbol, CodeGenerationDestination.ClassType, eventGenerationInfo, cancellationToken);
285var destinationSyntaxNode = await codeGenerationService.FindMostRelevantNameSpaceOrTypeDeclarationAsync(
316var newDestination = codeGenerationService
319using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var sourceImports);
338foreach (var syntax in symbolToDeclarations[analysisResult.Member])
356var declarationSyntax = originalMemberEditor.Generator.GetDeclaration(syntax);
400var destinationRoot = AddLeadingTriviaBeforeFirstMember(
415private static SyntaxTriviaList GetLeadingTriviaBeforeFirstMember(SyntaxNode root, ISyntaxFactsService syntaxFacts)
419var firstMember = members.First();
423private static SyntaxNode RemoveLeadingTriviaBeforeFirstMember(SyntaxNode root, ISyntaxFactsService syntaxFacts)
427var firstMember = members.First();
431private static SyntaxNode AddLeadingTriviaBeforeFirstMember(SyntaxNode root, ISyntaxFactsService syntaxFacts, SyntaxTriviaList trivia)
435var firstMember = members.First();
444private static ImmutableArray<SyntaxNode> GetImports(SyntaxNode start, ISyntaxFactsService syntaxFacts)
480private static async Task<ImmutableDictionary<ISymbol, ImmutableArray<SyntaxNode>>> InitializeSymbolToDeclarationsMapAsync(
486var symbolToDeclarationsBuilder = ImmutableDictionary.CreateBuilder<ISymbol, ImmutableArray<SyntaxNode>>();
ReplaceConditionalWithStatements\AbstractReplaceConditionalWithStatementsCodeRefactoringProvider.cs (29)
32where TExpressionSyntax : SyntaxNode
34where TStatementSyntax : SyntaxNode
36where TArgumentSyntax : SyntaxNode
37where TArgumentListSyntax : SyntaxNode
38where TVariableSyntax : SyntaxNode
39where TVariableDeclaratorSyntax : SyntaxNode
40where TEqualsValueClauseSyntax : SyntaxNode
88private static TConditionalExpressionSyntax? TryFindConditional(SyntaxNode? top, CancellationToken cancellationToken)
92TConditionalExpressionSyntax? Recurse(SyntaxNode? node)
110TConditionalExpressionSyntax? CheckNode(SyntaxNode? node)
219var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
232var newRoot = root.ReplaceNode(statement, ifStatement);
244var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
249var declarator = syntaxFacts.GetVariablesOfLocalDeclarationStatement(localDeclarationStatement).Single();
250var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(declarator);
252var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
256var identifier = generator.IdentifierName(symbol.Name);
268var newRoot = root.ReplaceNode(
278SyntaxNode WrapGlobal(TStatementSyntax statement)
285SyntaxNode container,
287Func<SyntaxNode, SyntaxNode> wrapConvertedSyntax,
306syntaxFacts.GetPartsOfConditionalExpression(conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
313SyntaxNode Rewrite(TExpressionSyntax expression)
318var containerWithConditionalReplaced = container.ReplaceNode(conditionalExpression, TryConvert(expression, conditionalType).WithTriviaFrom(conditionalExpression));
323SyntaxNode TryConvert(SyntaxNode expression, ITypeSymbol? conditionalType)
ReplacePropertyWithMethods\AbstractReplacePropertyWithMethodsService.cs (34)
23where TExpressionSyntax : SyntaxNode
24where TCrefSyntax : SyntaxNode
25where TStatementSyntax : SyntaxNode
26where TPropertySyntax : SyntaxNode
28public abstract SyntaxNode GetPropertyNodeToReplace(SyntaxNode propertyDeclaration);
29public abstract Task<ImmutableArray<SyntaxNode>> GetReplacementMembersAsync(
30Document document, IPropertySymbol property, SyntaxNode propertyDeclaration, IFieldSymbol propertyBackingField, string desiredGetMethodName, string desiredSetMethodName, CodeGenerationOptionsProvider fallbackOptions, CancellationToken cancellationToken);
33protected abstract TCrefSyntax CreateCrefSyntax(TCrefSyntax originalCref, SyntaxToken identifierToken, SyntaxNode? parameterType);
35protected abstract TExpressionSyntax UnwrapCompoundAssignment(SyntaxNode compoundAssignment, TExpressionSyntax readExpression);
36public async Task<SyntaxNode?> GetPropertyDeclarationAsync(CodeRefactoringContext context)
39protected static SyntaxNode GetFieldReference(SyntaxGenerator generator, IFieldSymbol propertyBackingField)
41var memberName = generator.IdentifierName(propertyBackingField.Name);
56SyntaxEditor editor, SyntaxNode identifierName,
72private delegate TExpressionSyntax GetWriteValue(ReferenceReplacer replacer, SyntaxNode parent);
163var literalOne = replacer.Generator.LiteralExpression(1);
165var writeValue = replacer._syntaxFacts.IsOperandOfIncrementExpression(replacer._expression)
185private static readonly Func<SyntaxNode, SyntaxGenerator, ReplaceParentArgs, SyntaxNode> replaceParentCallback =
191var writeExpression = replacer.GetWriteExpression(
255var declarator = _expression.Parent;
258var newDeclarator = Generator.NamedAnonymousObjectMemberDeclarator(
304SyntaxNode? parameterType;
319private SyntaxNode QualifyIfAppropriate(SyntaxNode newIdentifierName)
324var container = _propertyBackingField.IsStatic
341var newIdentifierName = QualifyIfAppropriate(Generator.IdentifierName(newIdentifierToken));
356private SyntaxNode GetWriteExpression(
364var newIdentifierName = QualifyIfAppropriate(Generator.IdentifierName(newIdentifierToken));
388string desiredName, SyntaxNode? argument, bool keepTrivia, string? conflictMessage)
393var newIdentifierName = Generator.IdentifierName(newIdentifier);
402? SpecializedCollections.EmptyEnumerable<SyntaxNode>()
405var invocation = Generator.InvocationExpression(updatedExpression, arguments);
417private SyntaxNode GetSetInvocationExpression(
Snippets\SnippetProviders\AbstractConsoleSnippetProvider.cs (22)
29protected abstract SyntaxNode? GetAsyncSupportingDeclaration(SyntaxToken token);
54protected override Func<SyntaxNode?, bool> GetSnippetContainerFunction(ISyntaxFacts syntaxFacts)
67var declaration = GetAsyncSupportingDeclaration(token);
70var invocation = isAsync
74var expressionStatement = generator.ExpressionStatement(invocation);
84protected override int GetTargetCaretPosition(ISyntaxFactsService syntaxFacts, SyntaxNode caretTarget, SourceText sourceText)
86var invocationExpression = caretTarget.DescendantNodes().Where(syntaxFacts.IsInvocationExpression).FirstOrDefault();
92var argumentListNode = syntaxFacts.GetArgumentListOfInvocationExpression(invocationExpression);
102protected override async Task<SyntaxNode> AnnotateNodesToReformatAsync(Document document,
105var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
107var snippetExpressionNode = FindAddedSnippetSyntaxNode(root, position, syntaxFacts.IsExpressionStatement);
111var reformatSnippetNode = snippetExpressionNode.WithAdditionalAnnotations(findSnippetAnnotation, cursorAnnotation, Simplifier.Annotation, SymbolAnnotation.Create(consoleSymbol!), Formatter.Annotation);
115protected override ImmutableArray<SnippetPlaceholder> GetPlaceHolderLocationsList(SyntaxNode node, ISyntaxFacts syntaxFacts, CancellationToken cancellationToken)
120private static SyntaxToken? GetOpenParenToken(SyntaxNode node, ISyntaxFacts syntaxFacts)
122var invocationExpression = node.DescendantNodes().Where(syntaxFacts.IsInvocationExpression).FirstOrDefault();
128var argumentListNode = syntaxFacts.GetArgumentListOfInvocationExpression(invocationExpression);
146protected override SyntaxNode? FindAddedSnippetSyntaxNode(SyntaxNode root, int position, Func<SyntaxNode?, bool> isCorrectContainer)
148var closestNode = root.FindNode(TextSpan.FromBounds(position, position));
149var nearestExpressionStatement = closestNode.FirstAncestorOrSelf<SyntaxNode>(isCorrectContainer);
Snippets\SnippetProviders\AbstractSnippetProvider.cs (21)
48protected abstract int GetTargetCaretPosition(ISyntaxFactsService syntaxFacts, SyntaxNode caretTarget, SourceText sourceText);
53protected abstract Func<SyntaxNode?, bool> GetSnippetContainerFunction(ISyntaxFacts syntaxFacts);
58protected abstract ImmutableArray<SnippetPlaceholder> GetPlaceHolderLocationsList(SyntaxNode node, ISyntaxFacts syntaxFacts, CancellationToken cancellationToken);
109var reformattedRoot = await documentWithIndentation.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
110var caretTarget = reformattedRoot.GetAnnotatedNodes(_cursorAnnotation).FirstOrDefault();
111var mainChangeNode = reformattedRoot.GetAnnotatedNodes(_findSnippetAnnotation).FirstOrDefault();
140private static SyntaxNode? GenerateElasticTriviaForSyntax(ISyntaxFacts syntaxFacts, SyntaxNode? node)
151var nodeWithTrivia = node.ReplaceTokens(allTokens.Skip(1).Take(allTokens.Count - 2),
189var root = await snippetDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
190var nearestStatement = FindAddedSnippetSyntaxNode(root, position, GetSnippetContainerFunction(syntaxFacts));
197var nearestStatementWithTrivia = GenerateElasticTriviaForSyntax(syntaxFacts, nearestStatement);
220var annotatedSnippetRoot = await AnnotateNodesToReformatAsync(document, _findSnippetAnnotation, _cursorAnnotation, position, cancellationToken).ConfigureAwait(false);
228protected virtual async Task<SyntaxNode> AnnotateNodesToReformatAsync(Document document,
231var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
233var snippetExpressionNode = FindAddedSnippetSyntaxNode(root, position, GetSnippetContainerFunction(syntaxFacts));
236var reformatSnippetNode = snippetExpressionNode.WithAdditionalAnnotations(findSnippetAnnotation, cursorAnnotation, Simplifier.Annotation, Formatter.Annotation);
240protected virtual SyntaxNode? FindAddedSnippetSyntaxNode(SyntaxNode root, int position, Func<SyntaxNode?, bool> isCorrectContainer)
242var closestNode = root.FindNode(TextSpan.FromBounds(position, position), getInnermostNodeForTie: true);
SolutionCrawler\AbstractDocumentDifferenceService.cs (12)
55if (!oldDocument.TryGetSyntaxRoot(out var oldRoot) ||
56!newDocument.TryGetSyntaxRoot(out var newRoot))
103private static SyntaxNode? GetChangedMember(
104ISyntaxFactsService syntaxFactsService, SyntaxNode oldRoot, SyntaxNode newRoot, TextChangeRange range)
112var oldMember = syntaxFactsService.GetContainingMemberDeclaration(oldRoot, range.Span.Start);
113var newMember = syntaxFactsService.GetContainingMemberDeclaration(newRoot, range.Span.Start);
137private static SyntaxNode? GetBestGuessChangedMember(
138ISyntaxFactsService syntaxFactsService, SyntaxNode oldRoot, SyntaxNode newRoot, TextChangeRange range)
153var oldMember = syntaxFactsService.GetContainingMemberDeclaration(oldRoot, range.Span.Start);
154var newMember = syntaxFactsService.GetContainingMemberDeclaration(newRoot, range.Span.Start);
SplitOrMergeIfStatements\AbstractMergeIfStatementsCodeRefactoringProvider.cs (27)
23protected abstract bool IsApplicableSpan(SyntaxNode node, TextSpan span, out SyntaxNode ifOrElseIf);
29Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode upperIfOrElseIf);
32Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode lowerIfOrElseIf);
34protected abstract SyntaxNode GetChangedRoot(Document document, SyntaxNode root, SyntaxNode upperIfOrElseIf, SyntaxNode lowerIfOrElseIf);
39var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
40var node = root.FindNode(textSpan, getInnermostNodeForTie: true);
42if (IsApplicableSpan(node, textSpan, out var ifOrElseIf))
47if (await CanBeMergedUpAsync(document, ifOrElseIf, cancellationToken, out var upperIfOrElseIf).ConfigureAwait(false))
50if (await CanBeMergedDownAsync(document, ifOrElseIf, cancellationToken, out var lowerIfOrElseIf).ConfigureAwait(false))
69var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
71var upperIfOrElseIf = FindIfOrElseIf(upperIfOrElseIfSpan, ifGenerator, root);
72var lowerIfOrElseIf = FindIfOrElseIf(lowerIfOrElseIfSpan, ifGenerator, root);
77var newRoot = GetChangedRoot(document, root, upperIfOrElseIf, lowerIfOrElseIf);
80static SyntaxNode FindIfOrElseIf(TextSpan span, IIfLikeStatementGenerator ifGenerator, SyntaxNode root)
82var innerMatch = root.FindNode(span, getInnermostNodeForTie: true);
83return innerMatch?.FirstAncestorOrSelf<SyntaxNode>(
88protected static IReadOnlyList<SyntaxNode> WalkDownScopeBlocks(
90IReadOnlyList<SyntaxNode> statements)
101protected static IReadOnlyList<SyntaxNode> WalkUpScopeBlocks(
103IReadOnlyList<SyntaxNode> statements)
SplitOrMergeIfStatements\AbstractSplitIfStatementCodeRefactoringProvider.cs (19)
25protected abstract Task<SyntaxNode> GetChangedRootAsync(
27SyntaxNode root,
28SyntaxNode ifOrElseIf,
29SyntaxNode leftCondition,
30SyntaxNode rightCondition,
36var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
49if (IsPartOfBinaryExpressionChain(token, GetLogicalExpressionKind(syntaxKinds), out var rootExpression) &&
50ifGenerator.IsCondition(rootExpression, out var ifOrElseIf))
65var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
68var ifOrElseIf = root.FindNode(ifOrElseIfSpan);
74var newRoot = await GetChangedRootAsync(document, root, ifOrElseIf, left, right, cancellationToken).ConfigureAwait(false);
78private static bool IsPartOfBinaryExpressionChain(SyntaxToken token, int syntaxKind, out SyntaxNode rootExpression)
94private static (SyntaxNode left, SyntaxNode right) SplitBinaryExpressionChain(
95SyntaxToken token, SyntaxNode rootExpression, ISyntaxFactsService syntaxFacts)
104syntaxFacts.GetPartsOfBinaryExpression(token.Parent, out var parentLeft, out _, out var parentRight);
106var left = parentLeft;
107var right = rootExpression.ReplaceNode(token.Parent, parentRight);
SplitOrMergeIfStatements\Consecutive\AbstractMergeConsecutiveIfStatementsCodeRefactoringProvider.cs (24)
56Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode firstIfOrElseIf)
69Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode secondIfOrElseIf)
81protected sealed override SyntaxNode GetChangedRoot(Document document, SyntaxNode root, SyntaxNode firstIfOrElseIf, SyntaxNode secondIfOrElseIf)
87var newCondition = generator.LogicalOrExpression(
140SyntaxNode ifOrElseIf,
141out SyntaxNode parentIfOrElseIf)
151SyntaxNode ifOrElseIf,
152out SyntaxNode elseIfClause)
163SyntaxNode ifOrElseIf,
165out SyntaxNode previousStatement)
177SyntaxNode ifOrElseIf,
179out SyntaxNode nextStatement)
191SyntaxNode firstStatement,
192SyntaxNode secondStatement,
229SyntaxNode ifOrElseIf,
231out SyntaxNode statement)
249SyntaxNode ifStatement1,
250SyntaxNode ifStatement2,
251out IReadOnlyList<SyntaxNode> statements)
SplitOrMergeIfStatements\IIfLikeStatementGenerator.cs (32)
20bool IsIfOrElseIf(SyntaxNode node);
22bool IsCondition(SyntaxNode expression, out SyntaxNode ifOrElseIf);
24bool IsElseIfClause(SyntaxNode node, out SyntaxNode parentIfOrElseIf);
26bool HasElseIfClause(SyntaxNode ifOrElseIf, out SyntaxNode elseIfClause);
28SyntaxNode GetCondition(SyntaxNode ifOrElseIf);
33SyntaxNode GetRootIfStatement(SyntaxNode ifOrElseIf);
38ImmutableArray<SyntaxNode> GetElseIfAndElseClauses(SyntaxNode ifOrElseIf);
40SyntaxNode WithCondition(SyntaxNode ifOrElseIf, SyntaxNode condition);
42SyntaxNode WithStatementInBlock(SyntaxNode ifOrElseIf, SyntaxNode statement);
44SyntaxNode WithStatementsOf(SyntaxNode ifOrElseIf, SyntaxNode otherIfOrElseIf);
46SyntaxNode WithElseIfAndElseClausesOf(SyntaxNode ifStatement, SyntaxNode otherIfStatement);
51SyntaxNode ToIfStatement(SyntaxNode ifOrElseIf);
56SyntaxNode ToElseIfClause(SyntaxNode ifOrElseIf);
62void InsertElseIfClause(SyntaxEditor editor, SyntaxNode afterIfOrElseIf, SyntaxNode elseIfClause);
67void RemoveElseIfClause(SyntaxEditor editor, SyntaxNode elseIfClause);
SplitOrMergeIfStatements\Nested\AbstractMergeNestedIfStatementsCodeRefactoringProvider.cs (21)
44Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode outerIfOrElseIf)
57Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode innerIfStatement)
69protected sealed override SyntaxNode GetChangedRoot(Document document, SyntaxNode root, SyntaxNode outerIfOrElseIf, SyntaxNode innerIfStatement)
77var newCondition = generator.LogicalAndExpression(
81var newIfOrElseIf = ifGenerator.WithStatementsOf(
91SyntaxNode statement,
92out SyntaxNode ifOrElseIf)
120SyntaxNode ifOrElseIf,
121out SyntaxNode ifStatement)
149SyntaxNode outerIfOrElseIf,
150SyntaxNode innerIfStatement,
200var outerIfStatement = ifGenerator.GetRootIfStatement(outerIfOrElseIf);
232SyntaxNode elseIfOrElseClause1,
233SyntaxNode elseIfOrElseClause2)
247var condition1 = ifGenerator.GetCondition(elseIfOrElseClause1);
248var condition2 = ifGenerator.GetCondition(elseIfOrElseClause2);
UseCoalesceExpressionForTernaryConditionalCheckCodeFixProvider.cs (18)
66var root = editor.OriginalRoot;
67var conditionalExpression = root.FindNode(diagnostic.AdditionalLocations[0].SourceSpan, getInnermostNodeForTie: true);
68var conditionalPartHigh = root.FindNode(diagnostic.AdditionalLocations[1].SourceSpan);
69var whenPart = root.FindNode(diagnostic.AdditionalLocations[2].SourceSpan);
71conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
73var conditionalPartLow = syntaxFacts.WalkDownParentheses(conditionalPartHigh);
78c, out var currentCondition, out var currentWhenTrue, out var currentWhenFalse);
80var coalesceExpression = GetCoalesceExpression(
96private static SyntaxNode GetCoalesceExpression(
98SyntaxNode whenPart, SyntaxNode whenTrue,
99SyntaxNode conditionalPartLow,
100SyntaxNode currentWhenTrue, SyntaxNode currentWhenFalse)
UseCompoundAssignmentUtilities.cs (7)
41ISyntaxFacts syntaxFacts, SyntaxNode expr, SemanticModel semanticModel, CancellationToken cancellationToken)
47ISyntaxFacts syntaxFacts, SyntaxNode expr, SemanticModel semanticModel,
74out _, out var expression, out _);
82out var subExpr, out _);
90out var expression, out var whenNotNull);
100SyntaxNode expr, SemanticModel semanticModel, bool isTopLevel, CancellationToken cancellationToken)
Wrapping\BinaryExpression\AbstractBinaryExpressionWrapper.cs (6)
22where TBinaryExpressionSyntax : SyntaxNode
44Document document, int position, SyntaxNode node, SyntaxWrappingOptions options, bool containsSyntaxError, CancellationToken cancellationToken)
105PrecedenceKind precedence, SyntaxNode expr, ArrayBuilder<SyntaxNodeOrToken> result)
117_syntaxFacts.GetPartsOfBinaryExpression(currentNodeOrToken.AsNode()!, out var left, out var opToken, out var right);
129bool IsValidBinaryExpression(PrecedenceKind precedence, SyntaxNode? node)
AddImport\VisualBasicAddImportFeatureService.vb (20)
28Protected Overrides Function CanAddImport(node As SyntaxNode, allowInHiddenRegions As Boolean, cancellationToken As CancellationToken) As Boolean
36node As SyntaxNode,
96Protected Overrides Function CanAddImportForNamespace(diagnosticId As String, node As SyntaxNode, ByRef nameNode As SimpleNameSyntax) As Boolean
109Protected Overrides Function CanAddImportForDeconstruct(diagnosticId As String, node As SyntaxNode) As Boolean
114Protected Overrides Function CanAddImportForGetAwaiter(diagnosticId As String, syntaxFactsService As ISyntaxFacts, node As SyntaxNode) As Boolean
119Protected Overrides Function CanAddImportForGetEnumerator(diagnosticId As String, syntaxFactsService As ISyntaxFacts, node As SyntaxNode) As Boolean
123Protected Overrides Function CanAddImportForGetAsyncEnumerator(diagnosticId As String, syntaxFactsService As ISyntaxFacts, node As SyntaxNode) As Boolean
127Protected Overrides Function CanAddImportForQuery(diagnosticId As String, node As SyntaxNode) As Boolean
133diagnosticId As String, node As SyntaxNode, ByRef nameNode As SimpleNameSyntax) As Boolean
159Private Shared Function CanAddImportForTypeOrNamespaceCore(node As SyntaxNode, ByRef nameNode As SimpleNameSyntax) As Boolean
192root As SyntaxNode,
217Protected Overrides Function GetImportNamespacesInScope(semanticModel As SemanticModel, node As SyntaxNode, cancellationToken As CancellationToken) As ISet(Of INamespaceSymbol)
221Protected Overrides Function GetDeconstructInfo(semanticModel As SemanticModel, node As SyntaxNode, cancellationToken As CancellationToken) As ITypeSymbol
227node As SyntaxNode,
279contextNode As SyntaxNode,
291contextNode As SyntaxNode,
310contextNode As SyntaxNode,
329expression As SyntaxNode,
337Dim leftExpression As SyntaxNode
355Protected Overrides Function IsAddMethodContext(node As SyntaxNode, semanticModel As SemanticModel) As Boolean
ChangeSignature\VisualBasicChangeSignatureService.vb (29)
151Private Shared Function TryGetSelectedIndexFromDeclaration(position As Integer, matchingNode As SyntaxNode) As Integer
156Private Shared Function GetMatchingNode(node As SyntaxNode, restrictToDeclarations As Boolean) As SyntaxNode
175Private Shared Function IsInSymbolHeader(matchingNode As SyntaxNode, position As Integer) As Boolean
203matchingNode As SyntaxNode,
227Public Overrides Function FindNodeToUpdate(document As Document, node As SyntaxNode) As SyntaxNode
242Private Shared Function GetNodeContainingTargetNode(originalNode As SyntaxNode, matchingNode As SyntaxNode) As SyntaxNode
261Private Shared Function GetUpdatableNode(matchingNode As SyntaxNode) As SyntaxNode
276potentiallyUpdatedNode As SyntaxNode,
277originalNode As SyntaxNode,
280cancellationToken As CancellationToken) As Task(Of SyntaxNode)
521Private Shared Function IsParamsArrayExpanded(semanticModel As SemanticModel, node As SyntaxNode, symbolInfo As SymbolInfo, cancellationToken As CancellationToken) As Boolean
579Private Function UpdateDeclaration(Of T As SyntaxNode)(
633Private Function VerifyAndPermuteParamNodes(paramNodes As ImmutableArray(Of XmlElementSyntax), declarationSymbol As ISymbol, updatedSignature As SignatureChange) As ImmutableArray(Of SyntaxNode)
641Return ImmutableArray(Of SyntaxNode).Empty
645Return ImmutableArray(Of SyntaxNode).Empty
653Return ImmutableArray(Of SyntaxNode).Empty
658Return ImmutableArray(Of SyntaxNode).Empty
666Dim permutedParams = ArrayBuilder(Of SyntaxNode).GetInstance()
741Protected Overrides Function TransferLeadingWhitespaceTrivia(Of T As SyntaxNode)(newArgument As T, oldArgument As SyntaxNode) As T
757Protected Overrides Function CreateExplicitParamsArrayFromIndividualArguments(newArguments As SeparatedSyntaxList(Of SyntaxNode), indexInExistingList As Integer, parameterSymbol As IParameterSymbol) As SyntaxNode
763Protected Overrides Function AddNameToArgument(newArgument As SyntaxNode, name As String) As SyntaxNode
CodeFixes\GenerateEndConstruct\GenerateEndConstructCodeFixProvider.vb (13)
72Dim beginStatement = token.GetAncestors(Of SyntaxNode) _
114Private Shared Function IsCandidate(node As SyntaxNode) As Boolean
127Private Shared Function GetBeginStatement(node As SyntaxNode) As SyntaxNode
142(Function(n As TryBlockSyntax) DirectCast(n, SyntaxNode)),
147Private Shared Function GetEndStatement(node As SyntaxNode) As SyntaxNode
149(Function(n As MultiLineIfBlockSyntax) DirectCast(n.EndIfStatement, SyntaxNode)),
188updatedProperty = DirectCast(gen.WithGetAccessorStatements(updatedProperty, Array.Empty(Of SyntaxNode)()), PropertyBlockSyntax)
192updatedProperty = DirectCast(gen.WithSetAccessorStatements(updatedProperty, Array.Empty(Of SyntaxNode)()), PropertyBlockSyntax)
199Public Shared Function GetDescription(node As SyntaxNode) As String
213Private Shared Async Function GenerateEndConstructAsync(document As Document, endStatement As SyntaxNode, cancellationToken As CancellationToken) As Task(Of Document)
231Private Shared Async Function InsertEndConstructAsync(document As Document, endStatement As SyntaxNode, cancellationToken As CancellationToken) As Task(Of Document)
CodeFixes\IncorrectExitContinue\IncorrectExitContinueCodeFixProvider.AddKeywordCodeAction.vb (8)
15Private ReadOnly _node As SyntaxNode
16Private ReadOnly _containingBlock As SyntaxNode
18Private ReadOnly _updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax)
21Public Sub New(node As SyntaxNode,
23containingBlock As SyntaxNode,
25updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax))
CodeFixes\IncorrectExitContinue\IncorrectExitContinueCodeFixProvider.ReplaceKeywordCodeAction.vb (8)
16Private ReadOnly _node As SyntaxNode
18Private ReadOnly _updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax)
19Private ReadOnly _containingBlock As SyntaxNode
22Public Sub New(createBlockKind As SyntaxKind, invalidToken As SyntaxToken, syntax As SyntaxNode, containingBlock As SyntaxNode, document As Document,
23updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax))
CodeFixes\IncorrectExitContinue\IncorrectExitContinueCodeFixProvider.vb (20)
69Dim node = token.GetAncestors(Of SyntaxNode) _
94Private Sub CreateContinueCodeActions(document As SemanticDocument, node As SyntaxNode, enclosingblocks As IEnumerable(Of SyntaxNode), ByRef codeActions As List(Of CodeAction), cancellationToken As CancellationToken)
126Private Sub CreateExitCodeActions(document As SemanticDocument, node As SyntaxNode, enclosingblocks As IEnumerable(Of SyntaxNode), ByRef codeActions As List(Of CodeAction), cancellationToken As CancellationToken)
158Private Shared Function GetEnclosingBlockKinds(enclosingblocks As IEnumerable(Of SyntaxNode), enclosingDeclaration As ISymbol) As IEnumerable(Of SyntaxKind)
179Private Shared Function GetEnclosingContinuableBlockKinds(enclosingblocks As IEnumerable(Of SyntaxNode)) As IEnumerable(Of SyntaxKind)
191Private Function CreateExitStatement(exitSyntax As SyntaxNode, containingBlock As SyntaxNode,
210Private Function CreateContinueStatement(continueSyntax As SyntaxNode, containingBlock As SyntaxNode,
305Private Shared Sub CreateAddKeywordActions(node As SyntaxNode,
307enclosingBlock As SyntaxNode,
309updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax),
316node As SyntaxNode,
317enclosingBlock As SyntaxNode,
319updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax),
329Private Shared Function CreateDeleteString(node As SyntaxNode) As String
CodeFixes\Suppression\VisualBasicSuppressionCodeFixProvider.vb (13)
28Protected Overrides Function CreatePragmaRestoreDirectiveTrivia(diagnostic As Diagnostic, formatNode As Func(Of SyntaxNode, CancellationToken, SyntaxNode), needsLeadingEndOfLine As Boolean, needsTrailingEndOfLine As Boolean, cancellationToken As CancellationToken) As SyntaxTriviaList
35Protected Overrides Function CreatePragmaDisableDirectiveTrivia(diagnostic As Diagnostic, formatNode As Func(Of SyntaxNode, CancellationToken, SyntaxNode), needsLeadingEndOfLine As Boolean, needsTrailingEndOfLine As Boolean, cancellationToken As CancellationToken) As SyntaxTriviaList
55formatNode As Func(Of SyntaxNode, CancellationToken, SyntaxNode),
82Protected Overrides Function GetContainingStatement(token As SyntaxToken) As SyntaxNode
102Protected Overrides Function IsAttributeListWithAssemblyAttributes(node As SyntaxNode) As Boolean
117newRoot As SyntaxNode,
124cancellationToken As CancellationToken) As SyntaxNode
152targetNode As SyntaxNode,
155diagnostic As Diagnostic) As SyntaxNode
209Protected Overrides Function IsSingleAttributeInAttributeList(attribute As SyntaxNode) As Boolean
CodeRefactorings\SyncNamespace\VisualBasicChangeNamespaceService.vb (9)
24Public Overrides Function TryGetReplacementReferenceSyntax(reference As SyntaxNode, newNamespaceParts As ImmutableArray(Of String), syntaxFacts As ISyntaxFactsService, ByRef old As SyntaxNode, ByRef [new] As SyntaxNode) As Boolean
60Protected Overrides Function GetValidContainersFromAllLinkedDocumentsAsync(document As Document, container As SyntaxNode, cancellationToken As CancellationToken) As Task(Of ImmutableArray(Of (DocumentId, SyntaxNode)))
61Return SpecializedTasks.Default(Of ImmutableArray(Of (DocumentId, SyntaxNode)))()
70Protected Overrides Function GetMemberDeclarationsInContainer(container As SyntaxNode) As SyntaxList(Of StatementSyntax)
75Protected Overrides Function TryGetApplicableContainerFromSpanAsync(document As Document, span As TextSpan, cancellationToken As CancellationToken) As Task(Of SyntaxNode)
80Protected Overrides Function GetDeclaredNamespace(container As SyntaxNode) As String
Completion\CompletionProviders\ImplementsClauseCompletionProvider.vb (3)
191Private Function GetInterfacesAndContainers(position As Integer, node As SyntaxNode, semanticModel As SemanticModel, kind As SyntaxKind, cancellationToken As CancellationToken) As ImmutableArray(Of ISymbol)
228Private Sub AddAliasesAndContainers(symbol As ISymbol, interfacesAndContainers As ICollection(Of ISymbol), node As SyntaxNode, semanticModel As SemanticModel)
246Private Shared Sub AddAlias(symbol As ISymbol, interfacesAndContainers As ICollection(Of ISymbol), node As SyntaxNode, semanticModel As SemanticModel)
EditAndContinue\SyntaxComparer.vb (47)
21Public Sub New(oldRoot As SyntaxNode, newRoot As SyntaxNode, oldRootChildren As IEnumerable(Of SyntaxNode), newRootChildren As IEnumerable(Of SyntaxNode), Optional matchingLambdas As Boolean = False, Optional compareStatementSyntax As Boolean = False)
27Protected Overrides Function IsLambdaBodyStatementOrExpression(node As SyntaxNode) As Boolean
307Friend Overrides Function Classify(kind As Integer, node As SyntaxNode, ByRef isLeaf As Boolean) As Integer
312Friend Overloads Function Classify(kind As SyntaxKind, nodeOpt As SyntaxNode, ByRef isLeaf As Boolean, ignoreVariableDeclarations As Boolean) As Label
320Friend Shared Function ClassifyStatementSyntax(kind As SyntaxKind, nodeOpt As SyntaxNode, ByRef isLeaf As Boolean) As Label
724Private Shared Function ClassifyTopSytnax(kind As SyntaxKind, nodeOpt As SyntaxNode, ByRef isLeaf As Boolean, ignoreVariableDeclarations As Boolean) As Label
868Protected Overrides Function GetLabel(node As SyntaxNode) As Integer
876Friend Function GetLabelImpl(node As SyntaxNode) As Label
901Public Overrides Function ValuesEqual(left As SyntaxNode, right As SyntaxNode) As Boolean
937Protected Overrides Function TryComputeWeightedDistance(leftNode As SyntaxNode, rightNode As SyntaxNode, ByRef distance As Double) As Boolean
946Dim getParts = Function(node As SyntaxNode)
1030Dim ifParts = Function(node As SyntaxNode)
1054Dim elseStatements = Function(node As SyntaxNode)
1078Dim getParts = Function(node As SyntaxNode)
1136Private Shared Function ComputeWeightedDistance(leftHeader As SyntaxNode,
1138rightHeader As SyntaxNode,
1143Private Shared Function ComputeWeightedDistance(leftControlVariable As SyntaxNode,
1144leftHeader As SyntaxNode,
1146rightControlVariable As SyntaxNode,
1147rightHeader As SyntaxNode,
1209Private Shared Function TryGetName(node As SyntaxNode) As SyntaxNodeOrToken?
1292Public Overrides Function GetDistance(oldNode As SyntaxNode, newNode As SyntaxNode) As Double
1311Friend Shared Function ComputeValueDistance(leftNode As SyntaxNode, rightNode As SyntaxNode) As Double
1341Friend Overloads Shared Function ComputeDistance(Of TSyntaxNode As SyntaxNode)(oldList As SyntaxList(Of TSyntaxNode), newList As SyntaxList(Of TSyntaxNode)) As Double
1345Friend Overloads Shared Function ComputeDistance(Of TSyntaxNode As SyntaxNode)(oldList As SeparatedSyntaxList(Of TSyntaxNode), newList As SeparatedSyntaxList(Of TSyntaxNode)) As Double
1352Friend Shared Iterator Function GetDescendantTokensIgnoringSeparators(Of TSyntaxNode As SyntaxNode)(list As SyntaxList(Of TSyntaxNode)) As IEnumerable(Of SyntaxToken)
1363Private Shared Iterator Function GetDescendantTokensIgnoringSeparators(Of TSyntaxNode As SyntaxNode)(list As SeparatedSyntaxList(Of TSyntaxNode)) As IEnumerable(Of SyntaxToken)
1377Public Overloads Shared Function ComputeDistance(oldNode As SyntaxNode, newNode As SyntaxNode) As Double
1421Public Overloads Shared Function ComputeDistance(oldTokens As IEnumerable(Of SyntaxNode), newTokens As IEnumerable(Of SyntaxNode)) As Double
1431Public Overloads Shared Function ComputeDistance(oldTokens As ImmutableArray(Of SyntaxNode), newTokens As ImmutableArray(Of SyntaxNode)) As Double
1438Public Shared Function GetSequenceEdits(oldNodes As IEnumerable(Of SyntaxNode), newNodes As IEnumerable(Of SyntaxNode)) As IEnumerable(Of SequenceEdit)
1445Public Shared Function GetSequenceEdits(oldNodes As ImmutableArray(Of SyntaxNode), newNodes As ImmutableArray(Of SyntaxNode)) As IEnumerable(Of SequenceEdit)
1474Inherits LongestCommonImmutableArraySubsequence(Of SyntaxNode)
1478Protected Overrides Function Equals(oldElement As SyntaxNode, newElement As SyntaxNode) As Boolean
EditAndContinue\VisualBasicEditAndContinueAnalyzer.vb (169)
37Public Sub New(Optional testFaultInjector As Action(Of SyntaxNode) = Nothing)
43Friend Overrides Function TryFindMemberDeclaration(rootOpt As SyntaxNode, node As SyntaxNode, <Out> ByRef declarations As OneOrMany(Of SyntaxNode)) As Boolean
74declarations = OneOrMany.Create(variableDeclarator.Names.SelectAsArray(Function(n) CType(n, SyntaxNode)))
115Friend Overrides Function TryGetDeclarationBody(node As SyntaxNode) As SyntaxNode
150Dim body As SyntaxNode = Nothing
180Dim body As SyntaxNode = Nothing
204Friend Overrides Function IsDeclarationWithSharedBody(declaration As SyntaxNode) As Boolean
213Protected Overrides Function GetCapturedVariables(model As SemanticModel, memberBody As SyntaxNode) As ImmutableArray(Of ISymbol)
263Protected Overrides Function GetVariableUseSites(roots As IEnumerable(Of SyntaxNode), localOrParameter As ISymbol, model As SemanticModel, cancellationToken As CancellationToken) As IEnumerable(Of SyntaxNode)
295Friend Overrides Function TryGetActiveTokens(node As SyntaxNode) As IEnumerable(Of SyntaxToken)
378Friend Overrides Function GetActiveSpanEnvelope(declaration As SyntaxNode) As (envelope As TextSpan, hole As TextSpan)
463Protected Overrides Function GetEncompassingAncestorImpl(bodyOrMatchRoot As SyntaxNode) As SyntaxNode
494Protected Overrides Function FindStatementAndPartner(declarationBody As SyntaxNode,
496partnerDeclarationBodyOpt As SyntaxNode,
497<Out> ByRef partnerOpt As SyntaxNode,
498<Out> ByRef statementPart As Integer) As SyntaxNode
574Dim node As SyntaxNode = Nothing
617Friend Overrides Function FindDeclarationBodyPartner(leftDeclaration As SyntaxNode, rightDeclaration As SyntaxNode, leftNode As SyntaxNode) As SyntaxNode
633Friend Overrides Function IsClosureScope(node As SyntaxNode) As Boolean
637Protected Overrides Function FindEnclosingLambdaBody(containerOpt As SyntaxNode, node As SyntaxNode) As SyntaxNode
638Dim root As SyntaxNode = GetEncompassingAncestor(containerOpt)
641Dim body As SyntaxNode = Nothing
652Protected Overrides Function TryGetPartnerLambdaBody(oldBody As SyntaxNode, newLambda As SyntaxNode) As SyntaxNode
656Protected Overrides Function ComputeTopLevelMatch(oldCompilationUnit As SyntaxNode, newCompilationUnit As SyntaxNode) As Match(Of SyntaxNode)
660Protected Overrides Function ComputeTopLevelDeclarationMatch(oldDeclaration As SyntaxNode, newDeclaration As SyntaxNode) As Match(Of SyntaxNode)
676Protected Overrides Function ComputeBodyMatch(oldBody As SyntaxNode, newBody As SyntaxNode, knownMatches As IEnumerable(Of KeyValuePair(Of SyntaxNode, SyntaxNode))) As Match(Of SyntaxNode)
704Protected Overrides Function TryMatchActiveStatement(oldStatement As SyntaxNode,
706oldBody As SyntaxNode,
707newBody As SyntaxNode,
708<Out> ByRef newStatement As SyntaxNode) As Boolean
801Protected Overrides Function IsNamespaceDeclaration(node As SyntaxNode) As Boolean
806Private Shared Function IsTypeDeclaration(node As SyntaxNode) As Boolean
810Protected Overrides Function IsCompilationUnitWithGlobalStatements(node As SyntaxNode) As Boolean
814Protected Overrides Function IsGlobalStatement(node As SyntaxNode) As Boolean
818Protected Overrides Function GetGlobalStatementDiagnosticSpan(node As SyntaxNode) As TextSpan
822Protected Overrides Iterator Function GetTopLevelTypeDeclarations(compilationUnit As SyntaxNode) As IEnumerable(Of SyntaxNode)
856Protected Overrides Function GetSyntaxSequenceEdits(oldNodes As ImmutableArray(Of SyntaxNode), newNodes As ImmutableArray(Of SyntaxNode)) As IEnumerable(Of SequenceEdit)
860Friend Overrides ReadOnly Property EmptyCompilationUnit As SyntaxNode
871Protected Overrides Function StatementLabelEquals(node1 As SyntaxNode, node2 As SyntaxNode) As Boolean
875Private Shared Function GetItemIndexByPosition(Of TNode As SyntaxNode)(list As SeparatedSyntaxList(Of TNode), position As Integer) As Integer
885Private Shared Function ChildrenCompiledInBody(node As SyntaxNode) As Boolean
892Protected Overrides Function TryGetEnclosingBreakpointSpan(root As SyntaxNode, position As Integer, <Out> ByRef span As TextSpan) As Boolean
896Protected Overrides Function TryGetActiveSpan(node As SyntaxNode, statementPart As Integer, minLength As Integer, <Out> ByRef span As TextSpan) As Boolean
900Protected Overrides Iterator Function EnumerateNearStatements(statement As SyntaxNode) As IEnumerable(Of ValueTuple(Of SyntaxNode, Integer))
908Dim lastBlockStatement As SyntaxNode = Nothing
972Private Shared Function GetFieldOrPropertyModifiers(node As SyntaxNode) As SyntaxTokenList?
982Protected Overrides Function AreEquivalent(left As SyntaxNode, right As SyntaxNode) As Boolean
986Private Shared Function AreEquivalentIgnoringLambdaBodies(left As SyntaxNode, right As SyntaxNode) As Boolean
995Protected Overrides Function AreEquivalentActiveStatements(oldStatement As SyntaxNode, newStatement As SyntaxNode, statementPart As Integer) As Boolean
1028Private Shared Function HasMultiInitializer(modifiedIdentifier As SyntaxNode) As Boolean
1033Friend Overrides Function IsInterfaceDeclaration(node As SyntaxNode) As Boolean
1037Friend Overrides Function IsRecordDeclaration(node As SyntaxNode) As Boolean
1042Friend Overrides Function TryGetContainingTypeDeclaration(node As SyntaxNode) As SyntaxNode
1046Friend Overrides Function TryGetAssociatedMemberDeclaration(node As SyntaxNode, editKind As EditKind, <Out> ByRef declaration As SyntaxNode) As Boolean
1063Friend Overrides Function HasBackingField(propertyDeclaration As SyntaxNode) As Boolean
1067Friend Overrides Function IsDeclarationWithInitializer(declaration As SyntaxNode) As Boolean
1097Friend Overrides Function IsRecordPrimaryConstructorParameter(declaration As SyntaxNode) As Boolean
1101Friend Overrides Function IsPropertyAccessorDeclarationMatchingPrimaryConstructorParameter(declaration As SyntaxNode, newContainingType As INamedTypeSymbol, ByRef isFirstAccessor As Boolean) As Boolean
1123Protected Overrides Function GetSymbolDeclarationSyntax(reference As SyntaxReference, cancellationToken As CancellationToken) As SyntaxNode
1212Friend Overrides Function IsConstructorWithMemberInitializers(declaration As SyntaxNode) As Boolean
1262oldNode As SyntaxNode,
1263newNode As SyntaxNode,
1266editMap As IReadOnlyDictionary(Of SyntaxNode, EditKind),
1349node As SyntaxNode,
1402Friend Overrides Function ContainsLambda(declaration As SyntaxNode) As Boolean
1406Friend Overrides Function IsLambda(node As SyntaxNode) As Boolean
1410Friend Overrides Function IsNestedFunction(node As SyntaxNode) As Boolean
1414Friend Overrides Function IsLocalFunction(node As SyntaxNode) As Boolean
1418Friend Overrides Function TryGetLambdaBodies(node As SyntaxNode, ByRef body1 As SyntaxNode, ByRef body2 As SyntaxNode) As Boolean
1422Friend Overrides Function GetLambda(lambdaBody As SyntaxNode) As SyntaxNode
1426Protected Overrides Function GetLambdaBodyExpressionsAndStatements(lambdaBody As SyntaxNode) As IEnumerable(Of SyntaxNode)
1430Friend Overrides Function GetLambdaExpressionSymbol(model As SemanticModel, lambdaExpression As SyntaxNode, cancellationToken As CancellationToken) As IMethodSymbol
1437Friend Overrides Function GetContainingQueryExpression(node As SyntaxNode) As SyntaxNode
1441Friend Overrides Function QueryClauseLambdasTypeEquivalent(oldModel As SemanticModel, oldNode As SyntaxNode, newModel As SemanticModel, newNode As SyntaxNode, cancellationToken As CancellationToken) As Boolean
1499Protected Overrides Function TryGetDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan?
1503Protected Overloads Shared Function GetDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan
1507Private Shared Function TryGetDiagnosticSpanImpl(node As SyntaxNode, editKind As EditKind) As TextSpan?
1511Protected Overrides Function GetBodyDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan
1516Friend Shared Function TryGetDiagnosticSpanImpl(kind As SyntaxKind, node As SyntaxNode, editKind As EditKind) As TextSpan?
1741Private Overloads Shared Function GetDiagnosticSpan(ifKeyword As SyntaxToken, condition As SyntaxNode, thenKeywordOpt As SyntaxToken) As TextSpan
1838Friend Overrides Function GetLambdaParameterDiagnosticSpan(lambda As SyntaxNode, ordinal As Integer) As TextSpan
1879Protected Overrides Function TryGetDisplayName(node As SyntaxNode, editKind As EditKind) As String
1883Protected Overloads Shared Function GetDisplayName(node As SyntaxNode, editKind As EditKind) As String
1893Protected Overrides Function GetBodyDisplayName(node As SyntaxNode, Optional editKind As EditKind = EditKind.Update) As String
1897Private Shared Function TryGetDisplayNameImpl(node As SyntaxNode, editKind As EditKind) As String
2126Private ReadOnly _match As Match(Of SyntaxNode)
2127Private ReadOnly _oldNode As SyntaxNode
2128Private ReadOnly _newNode As SyntaxNode
2134oldNode As SyntaxNode,
2135newNode As SyntaxNode,
2137Optional match As Match(Of SyntaxNode) = Nothing,
2157Private Sub ReportError(kind As RudeEditKind, spanNode As SyntaxNode, displayNode As SyntaxNode)
2201Private Sub ClassifyMove(newNode As SyntaxNode)
2224Private Sub ClassifyReorder(oldNode As SyntaxNode, newNode As SyntaxNode)
2299Private Sub ClassifyInsert(node As SyntaxNode)
2331Private Sub ClassifyDelete(oldNode As SyntaxNode)
2358Private Sub ClassifyUpdate(newNode As SyntaxNode)
2378Public Sub ClassifyDeclarationBodyRudeUpdates(newDeclarationOrBody As SyntaxNode)
2401match As Match(Of SyntaxNode),
2402edit As Edit(Of SyntaxNode),
2403editMap As Dictionary(Of SyntaxNode, EditKind))
2434Friend Overrides Sub ReportMemberBodyUpdateRudeEdits(diagnostics As ArrayBuilder(Of RudeEditDiagnostic), newMember As SyntaxNode, span As TextSpan?)
2453Friend Overrides Sub ReportInsertedMemberSymbolRudeEdits(diagnostics As ArrayBuilder(Of RudeEditDiagnostic), newSymbol As ISymbol, newNode As SyntaxNode, insertingIntoExistingContainingType As Boolean)
2535Protected Overrides Function GetExceptionHandlingAncestors(node As SyntaxNode, isNonLeaf As Boolean) As List(Of SyntaxNode)
2536Dim result = New List(Of SyntaxNode)()
2571exceptionHandlingEdits As IEnumerable(Of Edit(Of SyntaxNode)),
2572oldStatement As SyntaxNode,
2583Private Shared Function AreExceptionHandlingPartsEquivalent(oldNode As SyntaxNode, newNode As SyntaxNode) As Boolean
2605Protected Overrides Function GetExceptionHandlingRegion(node As SyntaxNode, <Out> ByRef coversAllChildren As Boolean) As TextSpan
2635Friend Overrides Function IsStateMachineMethod(declaration As SyntaxNode) As Boolean
2640Protected Overrides Sub GetStateMachineInfo(body As SyntaxNode, ByRef suspensionPoints As ImmutableArray(Of SyntaxNode), ByRef kind As StateMachineKinds)
2649suspensionPoints = ImmutableArray(Of SyntaxNode).Empty
2654Friend Overrides Sub ReportStateMachineSuspensionPointRudeEdits(diagnostics As ArrayBuilder(Of RudeEditDiagnostic), oldNode As SyntaxNode, newNode As SyntaxNode)
2669Private Shared Function FindContainingStatementPart(node As SyntaxNode) As SyntaxNode
2695Private Shared Function HasNoSpilledState(awaitExpression As SyntaxNode, containingStatementPart As SyntaxNode) As Boolean
2740Private Shared Function GetExpressionFromStatementPart(statement As SyntaxNode) As ExpressionSyntax
2753Private Shared Function IsSimpleAwaitAssignment(node As SyntaxNode, awaitExpression As SyntaxNode) As Boolean
2766match As Match(Of SyntaxNode),
2767oldActiveStatement As SyntaxNode,
2768newActiveStatement As SyntaxNode,
2779Private Shared Function FindOnErrorOrResumeStatement(newDeclarationOrBody As SyntaxNode) As SyntaxNode
2797match As Match(Of SyntaxNode),
2798oldActiveStatement As SyntaxNode,
2799newActiveStatement As SyntaxNode)
ExtractMethod\Extensions.vb (26)
17Public Function GetUnparenthesizedExpression(node As SyntaxNode) As ExpressionSyntax
27Public Function GetStatementContainer(node As SyntaxNode) As SyntaxNode
39Public Function GetStatementUnderContainer(node As SyntaxNode) As ExecutableStatementSyntax
56Public Function ContainStatement(node As SyntaxNode, statement As StatementSyntax) As Boolean
68Public Function GetOutermostNodeWithSameSpan(initialNode As SyntaxNode, predicate As Func(Of SyntaxNode, Boolean)) As SyntaxNode
87Return CType(If(lastNode, initialNode), SyntaxNode)
91Public Function PartOfConstantInitializerExpression(node As SyntaxNode) As Boolean
97Private Function PartOfConstantInitializerExpression(Of T As SyntaxNode)(node As SyntaxNode, modifiersGetter As Func(Of T, SyntaxTokenList)) As Boolean
117Public Function IsArgumentForByRefParameter(node As SyntaxNode, model As SemanticModel, cancellationToken As CancellationToken) As Boolean
225Public Function ContainsFieldInitializer(node As SyntaxNode) As Boolean
232Public Function ContainsDotMemberAccess(node As SyntaxNode) As Boolean
233Dim predicate = Function(n As SyntaxNode)
269Dim predicate As Func(Of SyntaxNode, Boolean) =
295Return token.GetAncestors(Of SyntaxNode)().Any(predicate)
299Public Function ContainedInValidType(node As SyntaxNode) As Boolean
325Public Function UnderValidContext(ByVal node As SyntaxNode) As Boolean
328Dim predicate As Func(Of SyntaxNode, Boolean) =
339If Not node.GetAncestorsOrThis(Of SyntaxNode)().Any(predicate) Then
351Public Function IsReturnableConstruct(node As SyntaxNode) As Boolean
358Public Function HasSyntaxAnnotation([set] As HashSet(Of SyntaxAnnotation), node As SyntaxNode) As Boolean
370Public Function ToSeparatedList(Of T As SyntaxNode)(nodes As IEnumerable(Of Tuple(Of T, SyntaxToken))) As SeparatedSyntaxList(Of T)
463Public Function IsExpressionInCast(node As SyntaxNode) As Boolean
GenerateConstructor\VisualBasicGenerateConstructorService.vb (7)
25Protected Overrides Function IsImplicitObjectCreation(document As SemanticDocument, node As SyntaxNode, cancellationToken As CancellationToken) As Boolean
29Protected Overrides Function TryInitializeImplicitObjectCreation(document As SemanticDocument, node As SyntaxNode, cancellationToken As CancellationToken, ByRef token As SyntaxToken, ByRef arguments As ImmutableArray(Of Argument), ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
51Protected Overrides Function IsConstructorInitializerGeneration(document As SemanticDocument, node As SyntaxNode, cancellationToken As CancellationToken) As Boolean
59node As SyntaxNode,
88Protected Overrides Function IsSimpleNameGeneration(document As SemanticDocument, node As SyntaxNode, cancellationToken As CancellationToken) As Boolean
94node As SyntaxNode,
129node As SyntaxNode,
GenerateMember\GenerateParameterizedMember\VisualBasicGenerateConversionService.vb (9)
32Protected Overrides Function IsExplicitConversionGeneration(node As SyntaxNode) As Boolean
36Protected Overrides Function IsImplicitConversionGeneration(node As SyntaxNode) As Boolean
43Private Shared Function IsInImplementsClause(node As SyntaxNode) As Boolean
47Private Shared Function IsInMemberAccessExpression(node As SyntaxNode) As Boolean
55Protected Overrides Function TryInitializeExplicitConversionState(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef identifierToken As SyntaxToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
69Protected Overrides Function TryInitializeImplicitConversionState(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef identifierToken As SyntaxToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
83Private Shared Function TryGetConversionMethodAndTypeToGenerateIn(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
109Private Shared Function IsCastExpression(node As SyntaxNode) As Boolean
129Private Shared Function TryGetImplicitConversionMethodAndTypeToGenerateIn(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
GenerateType\VisualBasicGenerateTypeService.vb (9)
381genericName.TypeArgumentList.Arguments.OfType(Of SyntaxNode)().ToList(),
382Enumerable.Repeat(Of SyntaxNode)(Nothing, state.SimpleName.Arity))
426Public Overrides Async Function GetOrGenerateEnclosingNamespaceSymbolAsync(namedTypeSymbol As INamedTypeSymbol, containers() As String, selectedDocument As Document, selectedDocumentRoot As SyntaxNode, cancellationToken As CancellationToken) As Task(Of (INamespaceSymbol, INamespaceOrTypeSymbol, Location))
468Private Function GetDeclaringNamespace(containers As List(Of String), indexDone As Integer, localRoot As SyntaxNode) As NamespaceStatementSyntax
542Dim node As SyntaxNode = expression
568Dim node As SyntaxNode = expression
600Private Shared Function IsAllContainingTypeBlocksPublic(node As SyntaxNode) As Boolean
625modifiedRoot As SyntaxNode,
637Dim root As SyntaxNode = Nothing
SignatureHelp\AbstractIntrinsicOperatorSignatureHelpProvider.vb (4)
12Friend MustInherit Class AbstractIntrinsicOperatorSignatureHelpProvider(Of TSyntaxNode As SyntaxNode)
19Private Function TryGetSyntaxNode(root As SyntaxNode, position As Integer, syntaxFacts As ISyntaxFactsService, triggerReason As SignatureHelpTriggerReason, cancellationToken As CancellationToken, ByRef node As TSyntaxNode) As Boolean
83Protected Overridable Function GetCurrentArgumentStateWorker(node As SyntaxNode, position As Integer) As SignatureHelpState
103Private Function GetCurrentArgumentState(root As SyntaxNode, position As Integer, syntaxFacts As ISyntaxFactsService, currentSpan As TextSpan, cancellationToken As CancellationToken) As SignatureHelpState
SplitOrMergeIfStatements\VisualBasicIfLikeStatementGenerator.vb (36)
22Public Function IsIfOrElseIf(node As SyntaxNode) As Boolean Implements IIfLikeStatementGenerator.IsIfOrElseIf
27Public Function IsCondition(expression As SyntaxNode, ByRef ifOrElseIf As SyntaxNode) As Boolean Implements IIfLikeStatementGenerator.IsCondition
46Public Function IsElseIfClause(node As SyntaxNode, ByRef parentIfOrElseIf As SyntaxNode) As Boolean Implements IIfLikeStatementGenerator.IsElseIfClause
50parentIfOrElseIf = If(index > 0, ifBlock.ElseIfBlocks(index - 1), DirectCast(ifBlock, SyntaxNode))
58Public Function HasElseIfClause(ifOrElseIf As SyntaxNode, ByRef elseIfClause As SyntaxNode) As Boolean Implements IIfLikeStatementGenerator.HasElseIfClause
77Public Function GetCondition(ifOrElseIf As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.GetCondition
87Public Function GetRootIfStatement(ifOrElseIf As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.GetRootIfStatement
97Public Function GetElseIfAndElseClauses(ifOrElseIf As SyntaxNode) As ImmutableArray(Of SyntaxNode) Implements IIfLikeStatementGenerator.GetElseIfAndElseClauses
111Private Shared Function AddIfNotNull(list As SyntaxList(Of SyntaxNode), node As SyntaxNode) As SyntaxList(Of SyntaxNode)
115Public Function WithCondition(ifOrElseIf As SyntaxNode, condition As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.WithCondition
127Public Function WithStatementInBlock(ifOrElseIf As SyntaxNode, statement As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.WithStatementInBlock
131Public Function WithStatementsOf(ifOrElseIf As SyntaxNode, otherIfOrElseIf As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.WithStatementsOf
135Public Function WithElseIfAndElseClausesOf(ifStatement As SyntaxNode, otherIfStatement As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.WithElseIfAndElseClausesOf
141Public Function ToIfStatement(ifOrElseIf As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.ToIfStatement
163Public Function ToElseIfClause(ifOrElseIf As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.ToElseIfClause
180Public Sub InsertElseIfClause(editor As SyntaxEditor, afterIfOrElseIf As SyntaxNode, elseIfClause As SyntaxNode) Implements IIfLikeStatementGenerator.InsertElseIfClause
196Public Sub RemoveElseIfClause(editor As SyntaxEditor, elseIfClause As SyntaxNode) Implements IIfLikeStatementGenerator.RemoveElseIfClause
VisualBasicConvertToAsyncFunctionCodeFixProvider.vb (5)
35Protected Overrides Async Function GetDescriptionAsync(diagnostic As Diagnostic, node As SyntaxNode, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Task(Of String)
40Protected Overrides Async Function GetRootInOtherSyntaxTreeAsync(node As SyntaxNode, semanticModel As SemanticModel, diagnostic As Diagnostic, cancellationToken As CancellationToken) As Task(Of Tuple(Of SyntaxTree, SyntaxNode))
53Private Shared Async Function GetMethodFromExpressionAsync(oldNode As SyntaxNode, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Task(Of Tuple(Of SyntaxNode, MethodBlockSyntax))