Rubberduck: Multiple resolver errors in version 2.0.13

Created on 26 Apr 2017  路  7Comments  路  Source: rubberduck-vba/Rubberduck

I have a Word 2016 project that compiles without error but gives multiple Resolver Errors. The resolver error message isn't too helpful as it just identifies the module. How do I go about tracking the problems.

bug resolver

Most helpful comment

This issue went away some time ago. The code that was causing the issues is unchanged.

All 7 comments

Go to Rubberduck settings, enable ERROR-level logging. Close everything, open up the failing project and reproduce the errors; the log file will contain detailed stack trace information we can use to diagnose the problem. Enable TRACE-level for more verbose logs tracing all parser/resolver steps.

At error level reporting I get one error

RubberduckLog.txt

Thanks!

2017-04-26 21:14:13.1116;INFO-2.0.13.32288;Rubberduck.App;Rubberduck version 2.0.13.32288 loading: Operating System: Microsoft Windows NT 10.0.15063.0 x64 Host Product: Microsoft Office 2016 x64 Host Version: 16.0.7870.2031 Host Executable: WINWORD.EXE; 2017-04-26 21:14:58.8156;ERROR-2.0.13.32288;Rubberduck.Parsing.VBA.ParseCoordinator;Exception thrown resolving 'Project.clsArcinovaCTDTitle' (thread 7).;System.NullReferenceException: Object reference not set to an instance of an object. at Rubberduck.Parsing.Binding.IndexDefaultBinding.ResolveLExpressionIsVariablePropertyFunctionNoParameters(IBoundExpression lExpression) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\Binding\IndexDefaultBinding.cs:line 133 at Rubberduck.Parsing.Binding.IndexDefaultBinding.Resolve(IBoundExpression lExpression) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\Binding\IndexDefaultBinding.cs:line 91 at Rubberduck.Parsing.Symbols.IdentifierReferenceResolver.ResolveDefault(ParserRuleContext expression, StatementResolutionContext statementContext, Boolean isAssignmentTarget, Boolean hasExplicitLetStatement) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\Symbols\IdentifierReferenceResolver.cs:line 156 at Rubberduck.Parsing.Symbols.IdentifierReferenceResolver.Resolve(LetStmtContext context) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\Symbols\IdentifierReferenceResolver.cs:line 354 at Rubberduck.Parsing.Grammar.VBAParser.LetStmtContext.EnterRule(IParseTreeListener listener) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.cs:line 8513 at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t) at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t) at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t) at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t) at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t) at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t) at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t) at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t) at Rubberduck.Parsing.VBA.ParseCoordinator.ResolveReferences(DeclarationFinder finder, QualifiedModuleName qualifiedName, IParseTree tree, CancellationToken token) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\VBA\ParseCoordinator.cs:line 591

Okay, so that gives us the error, but the context of the error is in the more verbose log levels.

What we do know is that Project.clsArcinovaCTDTitle was being processed, and a NullReferenceException was thrown in ResolveLExpressionIsVariablePropertyFunctionNoParameters, line 133 which looks like this:

csharp var asTypeName = lExpression.ReferencedDeclaration.AsTypeName;

In all likelihood the ReferencedDeclaration was null, which caused the NRE. I suspect there might have been some WARNING-level or DEBUG-level log entries about it, in the annotation pass.

A bit of a stab in the dark, but before you dig into that, quickly scan the Project.clsArcinovaCTDTitle module for line continuations; because of VBA's ambiguous syntax, the 2.0.13 parser can easily get confused if you have something like this:

DoSomething _
    (arguments)

In other words the whitespace between a procedure and its argument list can't be replaced by a line continuation, otherwise we get the wrong parse tree and the resolver can break.

Wow. I wasn't expecting such a detailed response. As for as I an see there are no continuations in that Module, I've attached a trace level log for your information. The reason I've reported here is because I think the Resolver error is stopping access to code inspection because the code inspection window is empty when I open it. As a very novice and amateur coder I wouldn't expect to have absolutely no issues in my code.

RubberduckLog.txt

2017-04-27 07:51:20.1026;ERROR-2.0.13.32288;Rubberduck.Parsing.VBA.ParseCoordinator;Exception thrown resolving 'Project.clsArcinovaCTDTitle' (thread 16).;System.NullReferenceException: Object reference not set to an instance of an object.
   at Rubberduck.Parsing.Binding.IndexDefaultBinding.ResolveLExpressionIsVariablePropertyFunctionNoParameters(IBoundExpression lExpression) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\Binding\IndexDefaultBinding.cs:line 133
   at Rubberduck.Parsing.Binding.IndexDefaultBinding.Resolve(IBoundExpression lExpression) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\Binding\IndexDefaultBinding.cs:line 91
   at Rubberduck.Parsing.Symbols.IdentifierReferenceResolver.ResolveDefault(ParserRuleContext expression, StatementResolutionContext statementContext, Boolean isAssignmentTarget, Boolean hasExplicitLetStatement) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\Symbols\IdentifierReferenceResolver.cs:line 156
   at Rubberduck.Parsing.Symbols.IdentifierReferenceResolver.Resolve(LetStmtContext context) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\Symbols\IdentifierReferenceResolver.cs:line 354
   at Rubberduck.Parsing.Grammar.VBAParser.LetStmtContext.EnterRule(IParseTreeListener listener) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\Grammar\VBAParser.cs:line 8513
   at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t)
   at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t)
   at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t)
   at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t)
   at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t)
   at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t)
   at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t)
   at Antlr4.Runtime.Tree.ParseTreeWalker.Walk(IParseTreeListener listener, IParseTree t)
   at Rubberduck.Parsing.VBA.ParseCoordinator.ResolveReferences(DeclarationFinder finder, QualifiedModuleName qualifiedName, IParseTree tree, CancellationToken token) in C:\Users\Mathieu\Documents\GitHub\Rubberduck (main)\Rubberduck\Rubberduck.Parsing\VBA\ParseCoordinator.cs:line 591

@SteveLaycock a rather large number of fixes were applied to the resolver over the course of the past few months; can you reproduce the issue with v2.1.0?

This issue went away some time ago. The code that was causing the issues is unchanged.

Was this page helpful?
0 / 5 - 0 ratings