Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1436)

Unified Diff: pkg/analyzer/lib/src/generated/engine.dart

Issue 107833002: New analyzer snapshot. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/lib/src/generated/element.dart ('k') | pkg/analyzer/lib/src/generated/error.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/generated/engine.dart
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index 2e6b37ef50bccda9ce3d543cf10da18ed2167321..4ae1aa3f373b0069a047446d72b0588049622e42 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -10,9 +10,9 @@ import 'utilities_general.dart';
import 'instrumentation.dart';
import 'error.dart';
import 'source.dart';
-import 'scanner.dart' show Token, Scanner, CharSequenceReader;
+import 'scanner.dart' show Token, Scanner, CharSequenceReader, CharacterReader, IncrementalScanner;
import 'ast.dart';
-import 'parser.dart' show Parser;
+import 'parser.dart' show Parser, IncrementalParser;
import 'sdk.dart' show DartSdk;
import 'element.dart';
import 'resolver.dart';
@@ -691,6 +691,13 @@ class AnalysisException extends JavaException {
*/
abstract class AnalysisOptions {
/**
+ * Return `true` if analysis is to parse and analyze function bodies.
+ *
+ * @return `true` if analysis is to parse and analyzer function bodies
+ */
+ bool get analyzeFunctionBodies;
+
+ /**
* Return the maximum number of sources for which AST structures should be kept in the cache.
*
* @return the maximum number of sources for which AST structures should be kept in the cache
@@ -711,6 +718,20 @@ abstract class AnalysisOptions {
* @return `true` if analysis is to generate hint results
*/
bool get hint;
+
+ /**
+ * Return `true` if incremental analysis should be used.
+ *
+ * @return `true` if incremental analysis should be used
+ */
+ bool get incremental;
+
+ /**
+ * Return `true` if analysis is to parse comments.
+ *
+ * @return `true` if analysis is to parse comments
+ */
+ bool get preserveComments;
}
/**
@@ -3663,7 +3684,7 @@ class AnalysisContextImpl implements InternalAnalysisContext {
void set analysisOptions(AnalysisOptions options) {
{
- bool needsRecompute = this._options.dart2jsHint != options.dart2jsHint || (this._options.hint && !options.hint);
+ bool needsRecompute = this._options.analyzeFunctionBodies != options.analyzeFunctionBodies || this._options.dart2jsHint != options.dart2jsHint || (this._options.hint && !options.hint) || this._options.preserveComments != options.preserveComments;
int cacheSize = options.cacheSize;
if (this._options.cacheSize != cacheSize) {
this._options.cacheSize = cacheSize;
@@ -3675,8 +3696,11 @@ class AnalysisContextImpl implements InternalAnalysisContext {
_priorityOrder = newPriorityOrder;
}
}
+ this._options.analyzeFunctionBodies = options.analyzeFunctionBodies;
this._options.dart2jsHint = options.dart2jsHint;
this._options.hint = options.hint;
+ this._options.incremental = options.incremental;
+ this._options.preserveComments = options.preserveComments;
if (needsRecompute) {
invalidateAllResolutionInformation();
}
@@ -4214,6 +4238,9 @@ class AnalysisContextImpl implements InternalAnalysisContext {
if (_incrementalAnalysisCache != null && _incrementalAnalysisCache.hasWork()) {
AnalysisTask task = new IncrementalAnalysisTask(this, _incrementalAnalysisCache);
_incrementalAnalysisCache = null;
+ if (_options.incremental) {
+ return task;
+ }
}
for (Source source in _priorityOrder) {
AnalysisTask task = getNextTaskAnalysisTask2(source, _cache.get(source), true, hintsEnabled);
@@ -5326,6 +5353,11 @@ class AnalysisOptionsImpl implements AnalysisOptions {
int _cacheSize = DEFAULT_CACHE_SIZE;
/**
+ * A flag indicating whether analysis is to parse and analyze function bodies.
+ */
+ bool _analyzeFunctionBodies = true;
+
+ /**
* A flag indicating whether analysis is to generate dart2js related hint results.
*/
bool _dart2jsHint = true;
@@ -5337,6 +5369,16 @@ class AnalysisOptionsImpl implements AnalysisOptions {
bool _hint = true;
/**
+ * A flag indicating whether incremental analysis should be used.
+ */
+ bool _incremental = false;
+
+ /**
+ * flag indicating whether analysis is to parse comments.
+ */
+ bool _preserveComments = true;
+
+ /**
* Initialize a newly created set of analysis options to have their default values.
*/
AnalysisOptionsImpl();
@@ -5351,14 +5393,30 @@ class AnalysisOptionsImpl implements AnalysisOptions {
_cacheSize = options.cacheSize;
_dart2jsHint = options.dart2jsHint;
_hint = options.hint;
+ _incremental = options.incremental;
}
+ bool get analyzeFunctionBodies => _analyzeFunctionBodies;
+
int get cacheSize => _cacheSize;
bool get dart2jsHint => _dart2jsHint;
bool get hint => _hint;
+ bool get incremental => _incremental;
+
+ bool get preserveComments => _preserveComments;
+
+ /**
+ * Set whether analysis is to parse and analyze function bodies.
+ *
+ * @param analyzeFunctionBodies `true` if analysis is to parse and analyze function bodies
+ */
+ void set analyzeFunctionBodies(bool analyzeFunctionBodies) {
+ this._analyzeFunctionBodies = analyzeFunctionBodies;
+ }
+
/**
* Set the maximum number of sources for which AST structures should be kept in the cache to the
* given size.
@@ -5388,6 +5446,24 @@ class AnalysisOptionsImpl implements AnalysisOptions {
void set hint(bool hint) {
this._hint = hint;
}
+
+ /**
+ * Set whether incremental analysis should be used.
+ *
+ * @param incremental `true` if incremental analysis should be used
+ */
+ void set incremental(bool incremental) {
+ this._incremental = incremental;
+ }
+
+ /**
+ * Set whether analysis is to parse comments.
+ *
+ * @param preserveComments `true` if analysis is to parse comments
+ */
+ void set preserveComments(bool preserveComments) {
+ this._preserveComments = preserveComments;
+ }
}
/**
@@ -7202,7 +7278,19 @@ class IncrementalAnalysisTask extends AnalysisTask {
if (cache == null) {
return;
}
- compilationUnit = cache.resolvedUnit;
+ if (cache.oldLength > 0 || cache.newLength > 30) {
+ return;
+ }
+ CharacterReader reader = new CharSequenceReader(new CharSequence(cache.newContents));
+ BooleanErrorListener errorListener = new BooleanErrorListener();
+ IncrementalScanner scanner = new IncrementalScanner(cache.source, reader, errorListener);
+ Token oldTokens = cache.resolvedUnit.beginToken;
+ Token newTokens = scanner.rescan(oldTokens, cache.offset, cache.oldLength, cache.newLength);
+ if (errorListener.errorReported) {
+ return;
+ }
+ IncrementalParser parser = new IncrementalParser(cache.source, scanner.tokenMap, AnalysisErrorListener.NULL_LISTENER);
+ compilationUnit = parser.reparse(cache.resolvedUnit, scanner.leftToken, scanner.rightToken, cache.offset, cache.offset + cache.oldLength);
}
}
@@ -7337,6 +7425,7 @@ class ParseDartTask extends AnalysisTask {
TimeCounter_TimeCounterHandle timeCounterParse = PerformanceStatistics.parse.start();
try {
Parser parser = new Parser(source, errorListener);
+ parser.parseFunctionBodies = context.analysisOptions.analyzeFunctionBodies;
compilationUnit = parser.parseCompilationUnit(token[0]);
errors = errorListener.getErrors2(source);
for (Directive directive in compilationUnit.directives) {
@@ -7418,15 +7507,17 @@ class Source_ContentReceiver_11 implements Source_ContentReceiver {
Source_ContentReceiver_11(this.ParseDartTask_this, this.errorListener, this.token);
void accept(CharBuffer contents, int modificationTime) {
- ParseDartTask_this.modificationTime = modificationTime;
- Scanner scanner = new Scanner(ParseDartTask_this.source, new CharSequenceReader(contents), errorListener);
- token[0] = scanner.tokenize();
- ParseDartTask_this.lineInfo = new LineInfo(scanner.lineStarts);
+ doScan(contents, modificationTime);
}
void accept2(String contents, int modificationTime) {
+ doScan(new CharSequence(contents), modificationTime);
+ }
+
+ void doScan(CharSequence contents, int modificationTime) {
ParseDartTask_this.modificationTime = modificationTime;
- Scanner scanner = new Scanner(ParseDartTask_this.source, new CharSequenceReader(new CharSequence(contents)), errorListener);
+ Scanner scanner = new Scanner(ParseDartTask_this.source, new CharSequenceReader(contents), errorListener);
+ scanner.preserveComments = ParseDartTask_this.context.analysisOptions.preserveComments;
token[0] = scanner.tokenize();
ParseDartTask_this.lineInfo = new LineInfo(scanner.lineStarts);
}
« no previous file with comments | « pkg/analyzer/lib/src/generated/element.dart ('k') | pkg/analyzer/lib/src/generated/error.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698