public static bool HasModifier(this VBSyntax.MethodBaseSyntax d, VBasic.SyntaxKind modifierKind) { return(d.Modifiers.Any(m => SyntaxTokenExtensions.IsKind(m, modifierKind))); }
private async Task <SyntaxList <StatementSyntax> > AddLocalVariablesAsync(VBasic.VisualBasicSyntaxNode node, VBasic.SyntaxKind exitableType = default, bool isBreakableInCs = false) { _additionalLocals.PushScope(exitableType, isBreakableInCs); try { var convertedStatements = await _wrappedVisitor.Visit(node); var withLocals = await _additionalLocals.CreateLocalsAsync(node, convertedStatements, _generatedNames, _semanticModel); var allStatements = _additionalLocals.CreateStatements(node, withLocals, _generatedNames, _semanticModel); if (isBreakableInCs && exitableType == VBasic.SyntaxKind.TryKeyword) { var doOnce = SyntaxFactory.DoStatement(SyntaxFactory.Block(allStatements), CommonConversions.Literal(false)); allStatements = SyntaxFactory.SingletonList <StatementSyntax>(doOnce); } return(allStatements); } finally { _additionalLocals.PopScope(); } }
public record ScopeState(List <IHoistedNode> HoistedNodes, VBasic.SyntaxKind ExitableKind, bool IsBreakableInCs = false) {
public static bool IsParentKind(this SyntaxNode node, VBasic.SyntaxKind kind) { return(node?.Parent.IsKind(kind) == true); }