[analyzer] Add an API to get a language comment token off a unit.

Change-Id: I377fdc44d5e514d6d9a601b3947c3908e5a4497a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140768
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Mike Fairhurst 2020-03-26 03:47:57 +00:00 committed by commit-bot@chromium.org
parent ba389f9061
commit 3095a082cd
34 changed files with 148 additions and 119 deletions

View file

@ -460,6 +460,29 @@ class KeywordToken extends SimpleToken {
Object value() => keyword;
}
/**
* A specialized comment token representing a language version
* (e.g. '// @dart = 2.1').
*/
class LanguageVersionToken extends CommentToken {
/**
* The major language version.
*/
final int major;
/**
* The minor language version.
*/
final int minor;
LanguageVersionToken.from(String text, int offset, this.major, this.minor)
: super(TokenType.SINGLE_LINE_COMMENT, text, offset);
@override
LanguageVersionToken copy() =>
new LanguageVersionToken.from(lexeme, offset, major, minor);
}
/**
* A token that was scanned from the input. Each token knows which tokens
* precede and follow it, acting as a link in a doubly linked list of tokens.

View file

@ -187,19 +187,12 @@ class CommentToken extends StringToken implements analyzer.CommentToken {
}
}
/**
* A specialized comment token representing a language version
* (e.g. '// @dart = 2.1').
*/
class LanguageVersionToken extends CommentToken {
/**
* The major language version.
*/
class LanguageVersionToken extends CommentToken
implements analyzer.LanguageVersionToken {
@override
int major;
/**
* The minor language version.
*/
@override
int minor;
LanguageVersionToken.from(String text, int offset, this.major, this.minor)

View file

@ -76,7 +76,6 @@ class CompilationUnitParser {
var parser = Parser(
stringSource,
errorListener,
languageVersion: scanner.languageVersion,
featureSet: featureSet,
);
var cu = parser.parseCompilationUnit(startToken);

View file

@ -127,7 +127,6 @@ CompilationUnit parseDirectives(String contents,
var parser = Parser(
source,
errorCollector,
languageVersion: scanner.languageVersion,
featureSet: featureSet,
);
var unit = parser.parseDirectives(token);
@ -155,7 +154,6 @@ CompilationUnit _parseSource(
var parser = Parser(
source,
errorCollector,
languageVersion: scanner.languageVersion,
featureSet: featureSet,
)..parseFunctionBodies = parseFunctionBodies;
var unit = parser.parseCompilationUnit(token)

View file

@ -121,7 +121,6 @@ ParseStringResult parseString(
var parser = Parser(
source,
errorCollector,
languageVersion: scanner.languageVersion,
featureSet: scanner.featureSet,
);
var unit = parser.parseCompilationUnit(token);

View file

@ -1237,9 +1237,12 @@ abstract class CompilationUnit implements AstNode {
/// resynthesized from a summary.
FeatureSet get featureSet;
@Deprecated("Use languageVersionToken")
LanguageVersion get languageVersion;
/// The language version override specified for this compilation unit using a
/// token like '// @dart = 2.7', or `null` if no override is specified.
LanguageVersion get languageVersion;
LanguageVersionToken get languageVersionToken;
/// Return the line information for this compilation unit.
LineInfo get lineInfo;

View file

@ -5,7 +5,6 @@
import 'package:_fe_analyzer_shared/src/scanner/token.dart';
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/language_version.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
import 'package:meta/meta.dart';
@ -166,8 +165,7 @@ abstract class AstFactory {
List<Directive> directives,
List<CompilationUnitMember> declarations,
@required Token endToken,
@required FeatureSet featureSet,
LanguageVersion languageVersion});
@required FeatureSet featureSet});
/// Returns a newly created conditional expression.
ConditionalExpression conditionalExpression(

View file

@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
/// The language version override specified for a compilation unit.
@Deprecated("Use unit.languageVersionToken instead")
class LanguageVersion {
final int major;
final int minor;

View file

@ -5,4 +5,4 @@
/// Defines the tokens that are produced by the scanner, used by the parser, and
/// referenced from the [AST structure](ast.dart).
export 'package:_fe_analyzer_shared/src/scanner/token.dart'
show Keyword, Token, TokenType;
show Keyword, Token, TokenType, LanguageVersionToken;

View file

@ -536,7 +536,6 @@ class FileState {
return astFactory.compilationUnit(
beginToken: token,
endToken: token,
languageVersion: null,
featureSet: _featureSet,
)..lineInfo = LineInfo(const <int>[0]);
}
@ -599,7 +598,6 @@ class FileState {
Parser parser = Parser(
source,
errorListener,
languageVersion: scanner.languageVersion,
featureSet: scanner.featureSet,
useFasta: useFasta,
);

View file

@ -2026,7 +2026,22 @@ class CompilationUnitImpl extends AstNodeImpl implements CompilationUnit {
LineInfo lineInfo;
@override
final LanguageVersion languageVersion;
LanguageVersion get languageVersion {
final token = languageVersionToken;
return LanguageVersion(token.major, token.minor);
}
@override
LanguageVersionToken get languageVersionToken {
CommentToken comment = beginToken.precedingComments;
while (comment != null) {
if (comment is LanguageVersionToken) {
return comment;
}
comment = comment.next;
}
return null;
}
@override
final FeatureSet featureSet;
@ -2042,7 +2057,6 @@ class CompilationUnitImpl extends AstNodeImpl implements CompilationUnit {
List<Directive> directives,
List<CompilationUnitMember> declarations,
this.endToken,
this.languageVersion,
this.featureSet) {
_scriptTag = _becomeParentOf(scriptTag);
_directives = NodeListImpl<Directive>(this, directives);

View file

@ -6,7 +6,6 @@ import 'package:_fe_analyzer_shared/src/scanner/token.dart';
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/ast_factory.dart';
import 'package:analyzer/dart/ast/language_version.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
import 'package:meta/meta.dart';
@ -186,10 +185,9 @@ class AstFactoryImpl extends AstFactory {
List<Directive> directives,
List<CompilationUnitMember> declarations,
Token endToken,
FeatureSet featureSet,
LanguageVersion languageVersion}) =>
FeatureSet featureSet}) =>
CompilationUnitImpl(beginToken, scriptTag, directives, declarations,
endToken, languageVersion, featureSet);
endToken, featureSet);
@override
ConditionalExpression conditionalExpression(

View file

@ -286,7 +286,6 @@ class AstCloner implements AstVisitor<AstNode> {
directives: cloneNodeList(node.directives),
declarations: cloneNodeList(node.declarations),
endToken: cloneToken(node.endToken),
languageVersion: node.languageVersion,
featureSet: node.featureSet);
clone.lineInfo = node.lineInfo;
return clone;

View file

@ -108,7 +108,6 @@ class FileState {
Parser parser = Parser(
source,
errorListener,
languageVersion: scanner.languageVersion,
featureSet: scanner.featureSet,
useFasta: useFasta,
);

View file

@ -8,7 +8,6 @@ import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' as fasta;
import 'package:_fe_analyzer_shared/src/scanner/token.dart'
show Token, TokenType;
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/language_version.dart';
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/dart/error/syntactic_errors.dart';
@ -72,7 +71,7 @@ class Scanner {
*/
bool enableNonNullable = false;
LanguageVersion _languageVersion;
fasta.LanguageVersionToken _languageVersion;
FeatureSet _featureSet;
@ -114,7 +113,7 @@ class Scanner {
* The language version override specified for this compilation unit using a
* token like '// @dart = 2.7', or `null` if no override is specified.
*/
LanguageVersion get languageVersion => _languageVersion;
fasta.LanguageVersionToken get languageVersion => _languageVersion;
set preserveComments(bool preserveComments) {
this._preserveComments = preserveComments;
@ -199,10 +198,7 @@ class Scanner {
void _languageVersionChanged(
fasta.Scanner scanner, fasta.LanguageVersionToken languageVersion) {
if (languageVersion.major >= 0 && languageVersion.minor >= 0) {
_languageVersion = LanguageVersion(
languageVersion.major,
languageVersion.minor,
);
_languageVersion = languageVersion;
if (_featureSet != null) {
_featureSet = _featureSet.restrictToVersion(
Version(languageVersion.major, languageVersion.minor, 0));

View file

@ -50,7 +50,6 @@ import 'package:_fe_analyzer_shared/src/scanner/token_constants.dart';
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/ast_factory.dart' show AstFactory;
import 'package:analyzer/dart/ast/language_version.dart';
import 'package:analyzer/dart/ast/standard_ast_factory.dart' as standard;
import 'package:analyzer/dart/ast/token.dart' show Token, TokenType;
import 'package:analyzer/error/listener.dart';
@ -127,13 +126,10 @@ class AstBuilder extends StackListener {
/// `true` if variance behavior is enabled
final bool enableVariance;
/// The language version override, `null` if not such token.
LanguageVersion _languageVersion;
final FeatureSet _featureSet;
AstBuilder(ErrorReporter errorReporter, this.fileUri, this.isFullAst,
this._languageVersion, this._featureSet,
this._featureSet,
[Uri uri])
: this.errorReporter = FastaErrorReporter(errorReporter),
this.enableNonNullable = _featureSet.isEnabled(Feature.non_nullable),
@ -959,7 +955,6 @@ class AstBuilder extends StackListener {
directives: directives,
declarations: declarations,
endToken: endToken,
languageVersion: _languageVersion,
featureSet: _featureSet) as CompilationUnitImpl;
push(unit);
}

View file

@ -15,7 +15,6 @@ import 'package:_fe_analyzer_shared/src/parser/type_info.dart' as fasta;
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' as fasta;
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/language_version.dart';
import 'package:analyzer/dart/ast/standard_ast_factory.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/error/error.dart';
@ -202,12 +201,10 @@ class Parser {
/// Initialize a newly created parser to parse tokens in the given [_source]
/// and to report any errors that are found to the given [_errorListener].
factory Parser(Source source, AnalysisErrorListener errorListener,
{bool useFasta,
LanguageVersion languageVersion,
@required FeatureSet featureSet}) {
{bool useFasta, @required FeatureSet featureSet}) {
featureSet ??= FeatureSet.fromEnableFlags([]);
if (useFasta ?? Parser.useFasta) {
return _Parser2(source, errorListener, languageVersion, featureSet,
return _Parser2(source, errorListener, featureSet,
allowNativeClause: true);
} else {
return Parser.withoutFasta(source, errorListener, featureSet: featureSet);
@ -1904,7 +1901,6 @@ class Parser {
return astFactory.compilationUnit(
beginToken: eof,
endToken: eof,
languageVersion: null,
featureSet: _featureSet,
);
}
@ -1961,7 +1957,6 @@ class Parser {
directives: directives,
declarations: declarations,
endToken: _currentToken,
languageVersion: null,
featureSet: _featureSet,
);
}
@ -2418,7 +2413,6 @@ class Parser {
scriptTag: scriptTag,
directives: directives,
endToken: _currentToken,
languageVersion: null,
featureSet: _featureSet,
);
}
@ -2428,7 +2422,6 @@ class Parser {
scriptTag: scriptTag,
directives: directives,
endToken: _currentToken,
languageVersion: null,
featureSet: _featureSet,
);
}

View file

@ -24,11 +24,10 @@ abstract class ParserAdapter implements Parser {
final AstBuilder astBuilder;
ParserAdapter(this.currentToken, ErrorReporter errorReporter, Uri fileUri,
LanguageVersion languageVersion, FeatureSet featureSet,
FeatureSet featureSet,
{bool allowNativeClause = false})
: fastaParser = fasta.Parser(null),
astBuilder = AstBuilder(
errorReporter, fileUri, true, languageVersion, featureSet) {
astBuilder = AstBuilder(errorReporter, fileUri, true, featureSet) {
fastaParser.listener = astBuilder;
astBuilder.parser = fastaParser;
astBuilder.allowNativeClause = allowNativeClause;
@ -379,23 +378,21 @@ class _Parser2 extends ParserAdapter {
@override
bool enableUriInPartOf = true;
factory _Parser2(Source source, AnalysisErrorListener errorListener,
LanguageVersion languageVersion, FeatureSet featureSet,
factory _Parser2(
Source source, AnalysisErrorListener errorListener, FeatureSet featureSet,
{bool allowNativeClause = false}) {
var errorReporter = ErrorReporter(
errorListener,
source,
isNonNullableByDefault: featureSet.isEnabled(Feature.non_nullable),
);
return _Parser2._(
source, errorReporter, source.uri, languageVersion, featureSet,
return _Parser2._(source, errorReporter, source.uri, featureSet,
allowNativeClause: allowNativeClause);
}
_Parser2._(this._source, ErrorReporter errorReporter, Uri fileUri,
LanguageVersion languageVersion, FeatureSet featureSet,
{bool allowNativeClause = false})
: super(null, errorReporter, fileUri, languageVersion, featureSet,
FeatureSet featureSet, {bool allowNativeClause = false})
: super(null, errorReporter, fileUri, featureSet,
allowNativeClause: allowNativeClause);
@override

View file

@ -4,7 +4,6 @@
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/language_version.dart';
import 'package:analyzer/dart/ast/standard_ast_factory.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/element/element.dart';
@ -293,14 +292,12 @@ class AstTestFactory {
directives: directives ?? <Directive>[],
declarations: declarations ?? <CompilationUnitMember>[],
endToken: TokenFactory.tokenFromType(TokenType.EOF),
languageVersion: null,
featureSet: null);
static CompilationUnit compilationUnit9(
{String scriptTag,
List<Directive> directives,
List<CompilationUnitMember> declarations,
LanguageVersion languageVersion,
FeatureSet featureSet}) =>
astFactory.compilationUnit(
beginToken: TokenFactory.tokenFromType(TokenType.EOF),
@ -309,7 +306,6 @@ class AstTestFactory {
directives: directives ?? <Directive>[],
declarations: declarations ?? <CompilationUnitMember>[],
endToken: TokenFactory.tokenFromType(TokenType.EOF),
languageVersion: languageVersion,
featureSet: featureSet);
static ConditionalExpression conditionalExpression(Expression condition,

View file

@ -358,7 +358,6 @@ class AstBinaryReader {
directives: _readNodeList(data.compilationUnit_directives),
declarations: _readNodeList(data.compilationUnit_declarations),
endToken: null,
languageVersion: null,
featureSet: null);
}

View file

@ -214,7 +214,7 @@ class A {}
featureSet: FeatureSet.fromEnableFlags([]),
);
var languageVersion = result.unit.languageVersion;
var languageVersion = result.unit.languageVersionToken;
expect(languageVersion.major, 2);
expect(languageVersion.minor, 7);
}
@ -229,7 +229,7 @@ class A {}
featureSet: FeatureSet.fromEnableFlags([]),
);
expect(result.unit.languageVersion, isNull);
expect(result.unit.languageVersionToken, isNull);
}
test_parseString_lineInfo() {

View file

@ -741,7 +741,6 @@ E f() => g;
_unit = Parser(
source,
listener,
languageVersion: scanner.languageVersion,
featureSet: featureSet,
useFasta: true,
).parseCompilationUnit(tokens);

View file

@ -10,12 +10,12 @@ import 'package:_fe_analyzer_shared/src/scanner/error_token.dart'
show ErrorToken;
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' as fasta;
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart'
show LanguageVersionToken, ScannerConfiguration, ScannerResult, scanString;
show ScannerConfiguration, ScannerResult, scanString;
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/language_version.dart';
import 'package:analyzer/dart/ast/token.dart' as analyzer;
import 'package:analyzer/dart/ast/token.dart' show Token, TokenType;
import 'package:analyzer/dart/ast/token.dart'
show Token, TokenType, LanguageVersionToken;
import 'package:analyzer/error/error.dart';
import 'package:analyzer/error/listener.dart' show ErrorReporter;
import 'package:analyzer/src/dart/ast/ast.dart';
@ -1962,9 +1962,7 @@ class FastaParserTestCase
@override
void createParser(String content,
{int expectedEndOffset,
LanguageVersion languageVersion,
FeatureSet featureSet}) {
{int expectedEndOffset, FeatureSet featureSet}) {
featureSet ??= FeatureSet.forTesting();
var result = scanString(content,
configuration: featureSet.isEnabled(Feature.non_nullable)
@ -1972,7 +1970,7 @@ class FastaParserTestCase
: ScannerConfiguration.classic,
includeComments: true);
_fastaTokens = result.tokens;
_parserProxy = ParserProxy(_fastaTokens, languageVersion, featureSet,
_parserProxy = ParserProxy(_fastaTokens, featureSet,
allowNativeClause: allowNativeClause,
expectedEndOffset: expectedEndOffset);
}
@ -2083,7 +2081,7 @@ class FastaParserTestCase
CompilationUnit parseCompilationUnit2(
String content, GatheringErrorListener listener,
{LanguageVersion languageVersion, FeatureSet featureSet}) {
{LanguageVersionToken languageVersion, FeatureSet featureSet}) {
featureSet ??= FeatureSet.forTesting();
var source = StringSource(content, 'parser_test_StringSource.dart');
@ -2109,8 +2107,8 @@ class FastaParserTestCase
isNonNullableByDefault: false,
);
fasta.Parser parser = fasta.Parser(null);
AstBuilder astBuilder = AstBuilder(
errorReporter, source.uri, true, languageVersion, featureSet);
AstBuilder astBuilder =
AstBuilder(errorReporter, source.uri, true, featureSet);
parser.listener = astBuilder;
astBuilder.parser = parser;
astBuilder.allowNativeClause = allowNativeClause;
@ -3520,8 +3518,7 @@ class ParserProxy extends analyzer.ParserAdapter {
* Creates a [ParserProxy] which is prepared to begin parsing at the given
* Fasta token.
*/
factory ParserProxy(analyzer.Token firstToken,
LanguageVersion languageVersion, FeatureSet featureSet,
factory ParserProxy(analyzer.Token firstToken, FeatureSet featureSet,
{bool allowNativeClause = false, int expectedEndOffset}) {
TestSource source = TestSource();
var errorListener = GatheringErrorListener(checkRanges: true);
@ -3530,22 +3527,16 @@ class ParserProxy extends analyzer.ParserAdapter {
source,
isNonNullableByDefault: false,
);
return ParserProxy._(firstToken, errorReporter, null, errorListener,
languageVersion, featureSet,
return ParserProxy._(
firstToken, errorReporter, null, errorListener, featureSet,
allowNativeClause: allowNativeClause,
expectedEndOffset: expectedEndOffset);
}
ParserProxy._(
analyzer.Token firstToken,
ErrorReporter errorReporter,
Uri fileUri,
this._errorListener,
LanguageVersion languageVersion,
FeatureSet featureSet,
{bool allowNativeClause = false,
this.expectedEndOffset})
: super(firstToken, errorReporter, fileUri, languageVersion, featureSet,
ParserProxy._(analyzer.Token firstToken, ErrorReporter errorReporter,
Uri fileUri, this._errorListener, FeatureSet featureSet,
{bool allowNativeClause = false, this.expectedEndOffset})
: super(firstToken, errorReporter, fileUri, featureSet,
allowNativeClause: allowNativeClause) {
_eventListener = ForwardingTestListener(astBuilder);
fastaParser.listener = _eventListener;

View file

@ -9,7 +9,6 @@ import 'package:_fe_analyzer_shared/src/scanner/scanner.dart'
show ScannerResult, scanString;
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/language_version.dart';
import 'package:analyzer/dart/ast/standard_ast_factory.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart';
@ -115,7 +114,6 @@ abstract class AbstractParserTestCase implements ParserTestHelpers {
void createParser(
String content, {
int expectedEndOffset,
LanguageVersion languageVersion,
FeatureSet featureSet,
});
@ -9476,7 +9474,7 @@ class ParserTestCase with ParserTestHelpers implements AbstractParserTestCase {
void createParser(
String content, {
int expectedEndOffset,
LanguageVersion languageVersion,
LanguageVersionToken languageVersion,
FeatureSet featureSet,
}) {
Source source = TestSource();
@ -9488,7 +9486,6 @@ class ParserTestCase with ParserTestHelpers implements AbstractParserTestCase {
parser = Parser(
source,
listener,
languageVersion: languageVersion,
featureSet: featureSet,
);
parser.allowNativeClause = allowNativeClause;
@ -9623,7 +9620,6 @@ class ParserTestCase with ParserTestHelpers implements AbstractParserTestCase {
Parser parser = Parser(
source,
listener,
languageVersion: null,
featureSet: FeatureSet.forTesting(),
);
parser.enableOptionalNewAndConst = enableOptionalNewAndConst;
@ -9652,7 +9648,6 @@ class ParserTestCase with ParserTestHelpers implements AbstractParserTestCase {
Parser parser = Parser(
source,
listener,
languageVersion: null,
featureSet: FeatureSet.forTesting(),
);
parser.enableOptionalNewAndConst = enableOptionalNewAndConst;
@ -9993,7 +9988,6 @@ class ParserTestCase with ParserTestHelpers implements AbstractParserTestCase {
Parser parser = Parser(
source,
listener,
languageVersion: null,
featureSet: FeatureSet.forTesting(),
);
parser.enableOptionalNewAndConst = enableOptionalNewAndConst;
@ -10024,7 +10018,6 @@ class ParserTestCase with ParserTestHelpers implements AbstractParserTestCase {
Parser parser = Parser(
source,
listener,
languageVersion: null,
featureSet: FeatureSet.forTesting(),
);
parser.enableOptionalNewAndConst = enableOptionalNewAndConst;
@ -12425,7 +12418,6 @@ class SimpleParserTest extends ParserTestCase with SimpleParserTestMixin {
Parser(
NonExistingSource.unknown,
null,
languageVersion: null,
featureSet: FeatureSet.forTesting(),
),
isNotNull,

View file

@ -1187,7 +1187,6 @@ library l;''');
Parser parser = Parser(
NonExistingSource.unknown,
listener,
languageVersion: scanner.languageVersion,
featureSet: featureSet,
);
CompilationUnit unit = parser.parseCompilationUnit(token);

View file

@ -1620,7 +1620,7 @@ class A{}
''');
var result = await driver.getResult(path);
var languageVersion = result.unit.languageVersion;
var languageVersion = result.unit.languageVersionToken;
expect(languageVersion.major, 2);
expect(languageVersion.minor, 7);
}
@ -2208,7 +2208,7 @@ class A {}
''');
var parseResult = driver.parseFileSync(path);
var languageVersion = parseResult.unit.languageVersion;
var languageVersion = parseResult.unit.languageVersionToken;
expect(languageVersion.major, 2);
expect(languageVersion.minor, 7);
}
@ -2221,7 +2221,7 @@ class A {}
''');
var parseResult = driver.parseFileSync(path);
expect(parseResult.unit.languageVersion, isNull);
expect(parseResult.unit.languageVersionToken, isNull);
}
test_parseFileSync_notAbsolutePath() async {

View file

@ -14,12 +14,69 @@ import '../../../generated/resolver_test_case.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(CompilationUnitImplTest);
defineReflectiveTests(ExpressionImplTest);
defineReflectiveTests(InstanceCreationExpressionImplTest);
defineReflectiveTests(IntegerLiteralImplTest);
});
}
@reflectiveTest
class CompilationUnitImplTest extends ParserTestCase {
String testSource;
CompilationUnitImpl testUnit;
void parse(String source) {
testSource = source;
testUnit = parseCompilationUnit(source);
}
test_languageVersionComment_none() {
parse('''
void main() {}
''');
expect(testUnit.languageVersionToken, null);
}
test_languageVersionComment_none_onlyNormalComment() {
parse('''
// A normal comment.
void main() {}
''');
expect(testUnit.languageVersionToken, null);
}
test_languageVersionComment_firstComment() {
parse('''
// @dart=2.6
void main() {}
''');
expect(
testUnit.languageVersionToken, testUnit.beginToken.precedingComments);
}
test_languageVersionComment_secondComment() {
parse('''
// A normal comment.
// @dart=2.6
void main() {}
''');
expect(testUnit.languageVersionToken,
testUnit.beginToken.precedingComments.next);
}
test_languageVersionComment_thirdComment() {
parse('''
// A normal comment.
// Another normal comment.
// @dart=2.6
void main() {}
''');
expect(testUnit.languageVersionToken,
testUnit.beginToken.precedingComments.next.next);
}
}
@reflectiveTest
class ExpressionImplTest extends ParserTestCase {
String testSource;

View file

@ -37,7 +37,6 @@ class ParseBase with ResourceProviderMixin {
var parser = Parser(
source,
errorListener,
languageVersion: scanner.languageVersion,
featureSet: featureSet,
useFasta: useFasta,
);

View file

@ -31,7 +31,6 @@ CompilationUnit parseText(
Parser parser = Parser(
NonExistingSource.unknown,
AnalysisErrorListener.NULL_LISTENER,
languageVersion: scanner.languageVersion,
featureSet: scanner.featureSet,
);
CompilationUnit unit = parser.parseCompilationUnit(token);

View file

@ -86,7 +86,6 @@ CompilationUnit parseDirectives(Source source) {
var parser = Parser(
source,
AnalysisErrorListener.NULL_LISTENER,
languageVersion: null,
featureSet: FeatureSet.fromEnableFlags([]),
);
return parser.parseDirectives(token);
@ -121,7 +120,6 @@ CompilationUnit parseFull(Source source) {
var parser = Parser(
source,
AnalysisErrorListener.NULL_LISTENER,
languageVersion: null,
featureSet: FeatureSet.fromEnableFlags([]),
);
return parser.parseCompilationUnit(token);

View file

@ -755,10 +755,10 @@ class ScannerTest_Fasta_Direct_UTF8 extends ScannerTest_Fasta_Direct {
/// Scanner tests that exercise the Fasta scanner directly.
@reflectiveTest
class ScannerTest_Fasta_Direct extends ScannerTest_Fasta_Base {
LanguageVersionToken languageVersion;
fasta.LanguageVersionToken languageVersion;
void languageVersionChanged(
Scanner scanner, LanguageVersionToken languageVersion) {
Scanner scanner, fasta.LanguageVersionToken languageVersion) {
this.languageVersion = languageVersion;
}
@ -972,11 +972,11 @@ main() {}
token = token.precedingComments;
while (token != null) {
if (index == versionIndex) {
if (token is! LanguageVersionToken) {
if (token is! fasta.LanguageVersionToken) {
fail('Expected version comment at index $index');
}
} else {
if (token is LanguageVersionToken) {
if (token is fasta.LanguageVersionToken) {
fail('Did not expect version comment at index $index');
}
}

View file

@ -218,7 +218,7 @@ parseFull(Uri uri, List<int> source) {
// bodies. So this listener is not feature complete.
class _PartialAstBuilder extends AstBuilder {
_PartialAstBuilder(Uri uri)
: super(null, null, true, null, FeatureSet.fromEnableFlags([]), uri);
: super(null, null, true, FeatureSet.fromEnableFlags([]), uri);
}
// Invoke the fasta kernel generator for the program starting in [entryUri]

View file

@ -103,7 +103,6 @@ CompilationUnit parseDirectives(Source source) {
var parser = new Parser(
source,
AnalysisErrorListener.NULL_LISTENER,
languageVersion: null,
featureSet: FeatureSet.fromEnableFlags([]),
);
return parser.parseDirectives(token);
@ -128,7 +127,6 @@ CompilationUnit parseFull(Source source) {
var parser = new Parser(
source,
AnalysisErrorListener.NULL_LISTENER,
languageVersion: null,
featureSet: FeatureSet.fromEnableFlags([]),
);
var unit = parser.parseCompilationUnit(token);

View file

@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:_fe_analyzer_shared/src/flow_analysis/flow_analysis.dart';
import 'package:_fe_analyzer_shared/src/scanner/token_impl.dart';
import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';