blob: deea1ef1345852f70a4875d30541ba3ff6a74c70 [file] [log] [blame]
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:source_span/source_span.dart';
import 'ast.dart';
import 'visitor.dart';
typedef _IsDefined = bool Function(String variable);
/// An AST visitor that ensures that all variables are valid.
class Validator extends RecursiveVisitor {
final _IsDefined _isDefined;
Validator(this._isDefined);
void visitVariable(VariableNode node) {
if (_isDefined(node.name)) return;
throw SourceSpanFormatException("Undefined variable.", node.span);
}
}