Line data Source code
1 : // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 : // for details. All rights reserved. Use of this source code is governed by a
3 : // BSD-style license that can be found in the LICENSE file.
4 :
5 : import 'package:source_span/source_span.dart';
6 :
7 : import 'ast.dart';
8 : import 'visitor.dart';
9 :
10 : typedef bool _IsDefined(String variable);
11 :
12 : /// An AST visitor that ensures that all variables are valid.
13 : class Validator extends RecursiveVisitor {
14 : final _IsDefined _isDefined;
15 :
16 0 : Validator(this._isDefined);
17 :
18 : void visitVariable(VariableNode node) {
19 0 : if (_isDefined(node.name)) return;
20 0 : throw new SourceSpanFormatException("Undefined variable.", node.span);
21 : }
22 : }
|