mirror of
https://github.com/dart-lang/sdk
synced 2024-10-06 13:47:50 +00:00
fasta listener assert enclosing event
The fasta parser generates begin/end event pairs such as [beginCompilationUnit] and [endCompilationUnit]. Each event should be generated "within" a "higher level" begin/end event pair, except for [beginCompilationUnit] and [endCompilationUnit], which should not be generated within any begin/end event pair. This CL updates the fasta test listener and associated test code to assert that [endTopLevelDeclaration] is generated within or is enclosed by a begin/end "CompilationUnit" event pair, and that the [beginCompilationUnit] and [endCompilationUnit] events are not enclosed by any begin/end event pairs. R=paulberry@google.com Review-Url: https://codereview.chromium.org/2993833002 .
This commit is contained in:
parent
907fbcd694
commit
6e4f00a27c
File diff suppressed because it is too large
Load diff
|
@ -467,12 +467,12 @@ class FastaParserTestCase extends Object
|
|||
|
||||
@override
|
||||
CompilationUnitMember parseFullCompilationUnitMember() {
|
||||
return _parserProxy._run((parser) => parser.parseTopLevelDeclaration);
|
||||
return _parserProxy.parseTopLevelDeclaration();
|
||||
}
|
||||
|
||||
@override
|
||||
Directive parseFullDirective() {
|
||||
return _parserProxy._run((parser) => parser.parseTopLevelDeclaration);
|
||||
return _parserProxy.parseTopLevelDeclaration();
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -792,6 +792,8 @@ class ParserProxy implements analyzer.Parser {
|
|||
*/
|
||||
final GatheringErrorListener _errorListener;
|
||||
|
||||
final ForwardingTestListener _eventListener;
|
||||
|
||||
/**
|
||||
* Creates a [ParserProxy] which is prepared to begin parsing at the given
|
||||
* Fasta token.
|
||||
|
@ -807,28 +809,40 @@ class ParserProxy implements analyzer.Parser {
|
|||
var astBuilder =
|
||||
new AstBuilder(errorReporter, library, member, scope, true);
|
||||
astBuilder.parseGenericMethodComments = enableGenericMethodComments;
|
||||
var fastaParser = new fasta.Parser(new ForwardingTestListener(astBuilder));
|
||||
var eventListener = new ForwardingTestListener(astBuilder);
|
||||
var fastaParser = new fasta.Parser(eventListener);
|
||||
astBuilder.parser = fastaParser;
|
||||
return new ParserProxy._(
|
||||
startingToken, fastaParser, astBuilder, errorListener);
|
||||
startingToken, fastaParser, astBuilder, errorListener, eventListener);
|
||||
}
|
||||
|
||||
ParserProxy._(this._currentFastaToken, this._fastaParser, this._astBuilder,
|
||||
this._errorListener);
|
||||
this._errorListener, this._eventListener);
|
||||
|
||||
noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
|
||||
|
||||
@override
|
||||
ClassMember parseClassMember(String className) {
|
||||
_astBuilder.className = className;
|
||||
_eventListener.begin('CompilationUnit');
|
||||
var result = _run((parser) => parser.parseMember) as ClassMember;
|
||||
_eventListener.end('CompilationUnit');
|
||||
_astBuilder.className = null;
|
||||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
CompilationUnit parseCompilationUnit2() {
|
||||
return _run((parser) => parser.parseUnit) as CompilationUnit;
|
||||
var result = _run((parser) => parser.parseUnit) as CompilationUnit;
|
||||
_eventListener.expectEmpty();
|
||||
return result;
|
||||
}
|
||||
|
||||
AnnotatedNode parseTopLevelDeclaration() {
|
||||
_eventListener.begin('CompilationUnit');
|
||||
var result = _run((parser) => parser.parseTopLevelDeclaration);
|
||||
_eventListener.end('CompilationUnit');
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue