Inline FileState.parse2()

Change-Id: I77a8c317bdf4780a3becb4c47d84fcdadfecbea0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/250486
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov 2022-07-05 16:54:03 +00:00 committed by Commit Bot
parent b2f41b63dd
commit bc31ab9e4b
2 changed files with 31 additions and 39 deletions

View file

@ -29,7 +29,6 @@ import 'package:analyzer/src/exception/exception.dart';
import 'package:analyzer/src/generated/parser.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
import 'package:analyzer/src/ignore_comments/ignore_info.dart';
import 'package:analyzer/src/source/source_resource.dart';
import 'package:analyzer/src/summary/api_signature.dart';
import 'package:analyzer/src/summary/package_bundle_reader.dart';
@ -557,43 +556,6 @@ class FileState {
}
}
/// TODO(scheglov) Remove it when [IgnoreInfo] is stored here.
CompilationUnitImpl parse2(
AnalysisErrorListener errorListener,
String content,
) {
CharSequenceReader reader = CharSequenceReader(content);
Scanner scanner = Scanner(source, reader, errorListener)
..configureFeatures(
featureSetForOverriding: _contextFeatureSet,
featureSet: _contextFeatureSet.restrictToVersion(
packageLanguageVersion,
),
);
Token token = scanner.tokenize(reportScannerErrors: false);
LineInfo lineInfo = LineInfo(scanner.lineStarts);
Parser parser = Parser(
source,
errorListener,
featureSet: scanner.featureSet,
lineInfo: lineInfo,
);
parser.enableOptionalNewAndConst = true;
var unit = parser.parseCompilationUnit(token);
unit.languageVersion = LibraryLanguageVersion(
package: packageLanguageVersion,
override: scanner.overrideVersion,
);
// StringToken uses a static instance of StringCanonicalizer, so we need
// to clear it explicitly once we are done using it for this file.
StringTokenImpl.canonicalizer.clear();
return unit;
}
/// Read the file content and ensure that all of the file properties are
/// consistent with the read content, including API signature.
///
@ -790,7 +752,36 @@ class FileState {
}
CompilationUnitImpl _parse(AnalysisErrorListener errorListener) {
return parse2(errorListener, content);
CharSequenceReader reader = CharSequenceReader(content);
Scanner scanner = Scanner(source, reader, errorListener)
..configureFeatures(
featureSetForOverriding: _contextFeatureSet,
featureSet: _contextFeatureSet.restrictToVersion(
packageLanguageVersion,
),
);
Token token = scanner.tokenize(reportScannerErrors: false);
LineInfo lineInfo = LineInfo(scanner.lineStarts);
Parser parser = Parser(
source,
errorListener,
featureSet: scanner.featureSet,
lineInfo: lineInfo,
);
parser.enableOptionalNewAndConst = true;
var unit = parser.parseCompilationUnit(token);
unit.languageVersion = LibraryLanguageVersion(
package: packageLanguageVersion,
override: scanner.overrideVersion,
);
// StringToken uses a static instance of StringCanonicalizer, so we need
// to clear it explicitly once we are done using it for this file.
StringTokenImpl.canonicalizer.clear();
return unit;
}
/// TODO(scheglov) write tests

View file

@ -520,6 +520,7 @@ class LibraryAnalyzer {
String content = file.content;
var unit = file.parse(errorListener);
// TODO(scheglov) Store [IgnoreInfo] as unlinked data.
_fileToLineInfo[file] = unit.lineInfo;
_fileToIgnoreInfo[file] = IgnoreInfo.forDart(unit, content);