public override void VisitVariableAccessSyntax(VariableAccessSyntax syntax) { if (this.deployTimeConstantScopeSyntax is null) { return; } if (this.model.GetSymbolInfo(syntax) is VariableSymbol variableSymbol && this.model.Binder.TryGetCycle(variableSymbol) is null) { // emit any error that has already been triggered previously in the value assignment if (this.errorSyntax != null) { this.AppendError(); } var variableVisitor = new DeployTimeConstantVariableVisitor(this.model); variableVisitor.Visit(variableSymbol.DeclaringSyntax); if (variableVisitor.InvalidReferencedBodyType != null) { this.errorSyntax = syntax; this.referencedBodyType = variableVisitor.InvalidReferencedBodyType; this.variableVisitorStack = variableVisitor.VisitedStack; this.referencedSymbol = variableVisitor.VisitedStack.Peek(); } } }
public override void VisitVariableAccessSyntax(VariableAccessSyntax syntax) { var baseSymbol = model.GetSymbolInfo(syntax); switch (baseSymbol) { case VariableSymbol variableSymbol: // emit any error that has already been triggered previously in the value assignment if (this.errorSyntax != null) { this.AppendError(); } var variableVisitor = new DeployTimeConstantVariableVisitor(this.model); variableVisitor.Visit(variableSymbol.DeclaringSyntax); if (variableVisitor.invalidReferencedBodyObj != null) { this.errorSyntax = syntax; this.referencedBodyObj = variableVisitor.invalidReferencedBodyObj; this.variableVisitorStack = variableVisitor.visitedStack; this.accessedSymbol = variableVisitor.visitedStack.Peek(); } break; } }