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

Side by Side Diff: pkg/analyzer/test/src/task/strong/strong_test_helper.dart

Issue 1724543002: fix #25487, infer block lambdas from return statements (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 months 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 unified diff | Download patch
« no previous file with comments | « pkg/analyzer/test/src/task/strong/inferred_type_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // TODO(jmesserly): this file needs to be refactored, it's a port from 5 // TODO(jmesserly): this file needs to be refactored, it's a port from
6 // package:dev_compiler's tests 6 // package:dev_compiler's tests
7 library analyzer.test.src.task.strong.strong_test_helper; 7 library analyzer.test.src.task.strong.strong_test_helper;
8 8
9 import 'package:analyzer/dart/ast/ast.dart'; 9 import 'package:analyzer/dart/ast/ast.dart';
10 import 'package:analyzer/dart/ast/token.dart'; 10 import 'package:analyzer/dart/ast/token.dart';
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 void addFile(String content, {String name: '/main.dart'}) { 45 void addFile(String content, {String name: '/main.dart'}) {
46 name = name.replaceFirst('^package:', '/packages/'); 46 name = name.replaceFirst('^package:', '/packages/');
47 files.newFile(name, content); 47 files.newFile(name, content);
48 } 48 }
49 49
50 /// Run the checker on a program, staring from '/main.dart', and verifies that 50 /// Run the checker on a program, staring from '/main.dart', and verifies that
51 /// errors/warnings/hints match the expected value. 51 /// errors/warnings/hints match the expected value.
52 /// 52 ///
53 /// See [addFile] for more information about how to encode expectations in 53 /// See [addFile] for more information about how to encode expectations in
54 /// the file text. 54 /// the file text.
55 void check() { 55 ///
56 /// Returns the main resolved library. This can be used for further checks.
57 CompilationUnit check() {
56 _checkCalled = true; 58 _checkCalled = true;
57 59
58 expect(files.getFile('/main.dart').exists, true, 60 expect(files.getFile('/main.dart').exists, true,
59 reason: '`/main.dart` is missing'); 61 reason: '`/main.dart` is missing');
60 62
61 var uriResolver = new _TestUriResolver(files); 63 var uriResolver = new _TestUriResolver(files);
62 // Enable task model strong mode 64 // Enable task model strong mode
63 var context = AnalysisEngine.instance.createAnalysisContext(); 65 var context = AnalysisEngine.instance.createAnalysisContext();
64 context.analysisOptions.strongMode = true; 66 context.analysisOptions.strongMode = true;
65 (context.analysisOptions as AnalysisOptionsImpl).strongModeHints = true; 67 (context.analysisOptions as AnalysisOptionsImpl).strongModeHints = true;
(...skipping 20 matching lines...) Expand all
86 var librarySource = context.getLibrariesContaining(source).single; 88 var librarySource = context.getLibrariesContaining(source).single;
87 var resolved = context.resolveCompilationUnit2(source, librarySource); 89 var resolved = context.resolveCompilationUnit2(source, librarySource);
88 errors.addAll(context.getErrors(source).errors.where((e) => 90 errors.addAll(context.getErrors(source).errors.where((e) =>
89 e.errorCode != HintCode.UNUSED_LOCAL_VARIABLE && 91 e.errorCode != HintCode.UNUSED_LOCAL_VARIABLE &&
90 // TODO(jmesserly): these are usually intentional dynamic calls. 92 // TODO(jmesserly): these are usually intentional dynamic calls.
91 e.errorCode.name != 'UNDEFINED_METHOD')); 93 e.errorCode.name != 'UNDEFINED_METHOD'));
92 94
93 _expectErrors(resolved, errors); 95 _expectErrors(resolved, errors);
94 } 96 }
95 } 97 }
98
99 return initialLibrary;
96 } 100 }
97 101
98 /// Adds a file using [addFile] and calls [check]. 102 /// Adds a file using [addFile] and calls [check].
99 void checkFile(String content) { 103 ///
104 /// Also returns the resolved compilation unit.
105 CompilationUnit checkFile(String content) {
100 addFile(content); 106 addFile(content);
101 check(); 107 return check();
102 } 108 }
103 109
104 SourceSpanWithContext _createSpanHelper( 110 SourceSpanWithContext _createSpanHelper(
105 LineInfo lineInfo, int start, Source source, String content, 111 LineInfo lineInfo, int start, Source source, String content,
106 {int end}) { 112 {int end}) {
107 var startLoc = _locationForOffset(lineInfo, source.uri, start); 113 var startLoc = _locationForOffset(lineInfo, source.uri, start);
108 var endLoc = _locationForOffset(lineInfo, source.uri, end ?? start); 114 var endLoc = _locationForOffset(lineInfo, source.uri, end ?? start);
109 115
110 var lineStart = startLoc.offset - startLoc.column; 116 var lineStart = startLoc.offset - startLoc.column;
111 // Find the end of the line. This is not exposed directly on LineInfo, but 117 // Find the end of the line. This is not exposed directly on LineInfo, but
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 384
379 @override 385 @override
380 Source resolveAbsolute(Uri uri, [Uri actualUri]) { 386 Source resolveAbsolute(Uri uri, [Uri actualUri]) {
381 if (uri.scheme == 'package') { 387 if (uri.scheme == 'package') {
382 return (provider.getResource('/packages/' + uri.path) as File) 388 return (provider.getResource('/packages/' + uri.path) as File)
383 .createSource(uri); 389 .createSource(uri);
384 } 390 }
385 return super.resolveAbsolute(uri, actualUri); 391 return super.resolveAbsolute(uri, actualUri);
386 } 392 }
387 } 393 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/task/strong/inferred_type_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698