예제 #1
0
 private void SaveUnresolvedExpression(ResolutionFailedExpression expression, Declaration parent, IBoundExpression withExpression)
 {
     if (expression.Context is VBAParser.LExpressionContext lExpression)
     {
         _declarationFinder.AddUnboundContext(parent, lExpression, withExpression);
     }
     else
     {
         Logger.Warn($"Default Context: Failed to resolve {expression.Context.GetText()}. Binding as much as we can.");
     }
 }
 private void Visit(
     ResolutionFailedExpression expression,
     QualifiedModuleName module,
     Declaration scope,
     Declaration parent)
 {
     // To bind as much as possible we gather all successfully resolved expressions and bind them here as a special case.
     foreach (var successfullyResolvedExpression in expression.SuccessfullyResolvedExpressions)
     {
         Visit(successfullyResolvedExpression, module, scope, parent);
     }
 }
예제 #3
0
        private void Visit(ResolutionFailedExpression expression, Declaration parent, IBoundExpression withExpression)
        {
            if (!expression.IsJoinedExpression)
            {
                SaveUnresolvedExpression(expression, parent, withExpression);
            }

            foreach (var successfullyResolvedExpression in expression.SuccessfullyResolvedExpressions)
            {
                Visit(successfullyResolvedExpression, parent, withExpression);
            }
        }
예제 #4
0
 private void Visit(
     ResolutionFailedExpression expression,
     QualifiedModuleName module,
     Declaration scope,
     Declaration parent,
     bool isAssignmentTarget,
     bool hasExplicitLetStatement)
 {
     // To bind as much as possible we gather all successfully resolved expressions and bind them here as a special case.
     foreach (var successfullyResolvedExpression in expression.SuccessfullyResolvedExpressions)
     {
         Visit((dynamic)successfullyResolvedExpression, module, scope, parent, false, false);
     }
 }