Example #1
0
 public override void ExitFunctionStmt(VBAParser.FunctionStmtContext context)
 {
     if (_currentScopeAttributes.Any())
     {
         _attributes.Add(_currentScope, _currentScopeAttributes);
     }
 }
        public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context)
        {
            var accessibility = GetProcedureAccessibility(context.visibility());
            var identifier    = context.functionName().identifier();

            if (identifier == null)
            {
                return;
            }
            var name = Identifier.GetName(identifier);

            var asTypeClause = context.asTypeClause();
            var asTypeName   = asTypeClause == null
                ? Tokens.Variant
                : asTypeClause.type().GetText();
            var typeHint    = Identifier.GetTypeHintValue(identifier);
            var isArray     = asTypeClause != null && asTypeClause.type().LPAREN() != null;
            var declaration = CreateDeclaration(
                name,
                asTypeName,
                accessibility,
                DeclarationType.Function,
                context,
                context.functionName().identifier().GetSelection(),
                isArray,
                asTypeClause,
                typeHint);

            AddDeclaration(declaration);
            SetCurrentScope(declaration, name);
        }
Example #3
0
        private void ConvertFunction(IInspectionResult result, VBAParser.FunctionStmtContext functionContext)
        {
            var rewriter = _state.GetRewriter(result.Target);

            var asTypeContext = ParserRuleContextHelper.GetChild <VBAParser.AsTypeClauseContext>(functionContext);

            if (asTypeContext != null)
            {
                rewriter.Remove(asTypeContext);
                rewriter.Remove(functionContext.children.ElementAt(functionContext.children.IndexOf(asTypeContext) - 1) as ParserRuleContext);
            }

            if (result.Target.TypeHint != null)
            {
                rewriter.Remove(ParserRuleContextHelper.GetDescendent <VBAParser.TypeHintContext>(functionContext));
            }

            rewriter.Replace(functionContext.FUNCTION(), Tokens.Sub);
            rewriter.Replace(functionContext.END_FUNCTION(), "End Sub");

            foreach (var returnStatement in GetReturnStatements(result.Target))
            {
                rewriter.Remove(returnStatement);
            }
        }
Example #4
0
 public override void ExitFunctionStmt(VBAParser.FunctionStmtContext context)
 {
     if (!string.IsNullOrEmpty(_currentScope.Item1) && _currentScopeAttributes.Any())
     {
         _attributes.Add(_currentScope, _currentScopeAttributes);
     }
 }
Example #5
0
 public ProcedureNode(VBAParser.FunctionStmtContext context, string scope, string localScope)
     : this(context, scope, localScope, VBProcedureKind.Function, context.visibility(), context.ambiguousIdentifier(), () => context.asTypeClause())
 {
     _argsListContext     = context.argList();
     _staticNode          = context.STATIC();
     _keyword             = context.FUNCTION();
     _asTypeClauseContext = context.asTypeClause();
 }
Example #6
0
        private void ConvertFunction(ModuleBodyElementDeclaration member, VBAParser.FunctionStmtContext functionContext, IModuleRewriter rewriter)
        {
            RemoveAsTypeDeclaration(functionContext, rewriter);
            RemoveTypeHint(member, functionContext, rewriter);

            ConvertFunctionDeclaration(functionContext, rewriter);
            ConvertExitFunctionStatements(functionContext, rewriter);

            RemoveReturnStatements(member, rewriter);
        }
Example #7
0
        private void ConvertFunction(IInspectionResult result, VBAParser.FunctionStmtContext functionContext, IModuleRewriter rewriter)
        {
            RemoveAsTypeDeclaration(functionContext, rewriter);
            RemoveTypeHint(result, functionContext, rewriter);

            ConvertFunctionDeclaration(functionContext, rewriter);
            ConvertExitFunctionStatements(functionContext, rewriter);

            RemoveReturnStatements(result, rewriter);
        }
Example #8
0
        private ProcedureNode GetNode(VBAParser.FunctionStmtContext context)
        {
            if (context == null)
            {
                return(null);
            }

            var scope      = QualifiedName.ToString();
            var localScope = scope + "." + context.ambiguousIdentifier().GetText();

            return(new ProcedureNode(context, scope, localScope));
        }
Example #9
0
        private static void ConvertExitFunctionStatements(VBAParser.FunctionStmtContext context, IModuleRewriter rewriter)
        {
            var exitStatements = context.GetDescendents <VBAParser.ExitStmtContext>();

            foreach (var exitStatement in exitStatements)
            {
                if (exitStatement.EXIT_FUNCTION() != null)
                {
                    rewriter.Replace(exitStatement, $"{Tokens.Exit} {Tokens.Sub}");
                }
            }
        }
        public static string Signature(this VBAParser.FunctionStmtContext context)
        {
            var visibility     = context.visibility();
            var visibilityText = visibility == null ? string.Empty : visibility.GetText();

            var identifierText = context.ambiguousIdentifier().GetText();
            var argsText       = context.argList().GetText();

            var asType     = context.asTypeClause();
            var asTypeText = asType == null ? string.Empty : asType.GetText();

            return((visibilityText + ' ' + Tokens.Function + ' ' + identifierText + argsText + ' ' + asTypeText).Trim());
        }
Example #11
0
        private string GetSignature(VBAParser.FunctionStmtContext context)
        {
            if (context == null)
            {
                return(null);
            }

            var @static      = context.STATIC() == null ? string.Empty : context.STATIC().GetText() + ' ';
            var keyword      = context.FUNCTION().GetText() + ' ';
            var args         = context.argList() == null ? "()" : context.argList().GetText() + ' ';
            var asTypeClause = context.asTypeClause() == null ? string.Empty : context.asTypeClause().GetText();
            var visibility   = context.visibility() == null ? string.Empty : context.visibility().GetText() + ' ';

            return(visibility + @static + keyword + context.functionName().identifier().GetText() + args + asTypeClause);
        }
Example #12
0
        public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context)
        {
            var accessibility = GetProcedureAccessibility(context.visibility());
            var name          = context.ambiguousIdentifier().GetText();

            var asTypeClause = context.asTypeClause();
            var asTypeName   = asTypeClause == null
                ? Tokens.Variant
                : asTypeClause.type().GetText();

            var declaration = CreateDeclaration(name, asTypeName, accessibility, DeclarationType.Function, context, context.ambiguousIdentifier().GetSelection());

            _declarations.Add(declaration);
            SetCurrentScope(name);
        }
Example #13
0
 private static void ConvertFunctionDeclaration(VBAParser.FunctionStmtContext functionContext, IModuleRewriter rewriter)
 {
     rewriter.Replace(functionContext.FUNCTION(), Tokens.Sub);
     rewriter.Replace(functionContext.END_FUNCTION(), "End Sub");
 }
 public override void ExitFunctionStmt(VBAParser.FunctionStmtContext context)
 {
     SetCurrentScope();
 }
Example #15
0
 public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context)
 {
     SetCurrentScope(context.identifier().GetText(), DeclarationType.Function);
 }
 public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context)
 {
     SetCurrentScope(Identifier.GetName(context.functionName().identifier()), DeclarationType.Function);
     //_resolver.Resolve(context.asTypeClause());
 }
Example #17
0
 public override void EnterFunctionStmt([NotNull] VBAParser.FunctionStmtContext context)
 {
     _results.Add(new CodeMetricsResult(0, 1, 0));
     _currentMember = _finder.UserDeclarations(DeclarationType.Function).Where(d => d.Context == context).First();
 }
 public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context)
 {
     _resolver.SetCurrentScope(context.ambiguousIdentifier().GetText());
 }
 public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context)
 {
     SetCurrentScope(Identifier.GetName(context.functionName()));
 }
Example #20
0
 public override void ExitFunctionStmt([NotNull] VBAParser.FunctionStmtContext context)
 {
     ExitMeasurableMember();
 }
 //This set of overloads returns the selection for the entire procedure statement body, i.e. Public Function Foo(bar As String) As String
 public static Selection GetProcedureSelection(this VBAParser.FunctionStmtContext context)
 {
     return(GetProcedureContextSelection(context));
 }
Example #22
0
 public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context)
 {
     CheckContext(context, context.END_FUNCTION());
     base.EnterFunctionStmt(context);
 }
Example #23
0
 public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context)
 {
     _currentScopeAttributes = new Attributes();
     _currentScope           = Tuple.Create(Identifier.GetName(context.functionName()), DeclarationType.Function);
 }
Example #24
0
        public static string GetName(VBAParser.FunctionStmtContext context, out Interval tokenInterval)
        {
            var nameContext = context.functionName();

            return(GetName(nameContext, out tokenInterval));
        }
Example #25
0
 public override void ExitFunctionStmt([NotNull] VBAParser.FunctionStmtContext context)
 => ExitMeasurableMember(_finder.UserDeclarations(DeclarationType.Function).Where(d => d.Context == context).First());
Example #26
0
 public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context)
 {
     _currentMember = new QualifiedMemberName(_qualifiedName, context.ambiguousIdentifier().GetText());
 }