Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 307a0e7

Browse files
author
Dart CI
committed
Version 2.16.0-36.0.dev
Merge commit '6f59892b82f31c73fd866338e8c5dad62183e224' into 'dev'
2 parents b1afd0f + 6f59892 commit 307a0e7

28 files changed

+772
-250
lines changed

pkg/front_end/analysis_options_no_lints.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ analyzer:
1111
- test/extensions/data/**
1212
- test/id_testing/data/**
1313
- test/language_versioning/data/**
14+
- test/macros/data/**
1415
- test/patching/data/**
1516
- test/predicates/data/**
1617
- test/static_types/data/**

pkg/front_end/lib/src/testing/id_testing_helper.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class TestConfig {
5252
final Map<ExperimentalFlag, bool> explicitExperimentalFlags;
5353
final AllowedExperimentalFlags? allowedExperimentalFlags;
5454
final Uri? librariesSpecificationUri;
55+
final Uri? packageConfigUri;
5556
// TODO(johnniwinther): Tailor support to redefine selected platform
5657
// classes/members only.
5758
final bool compileSdk;
@@ -62,6 +63,7 @@ class TestConfig {
6263
{this.explicitExperimentalFlags = const {},
6364
this.allowedExperimentalFlags,
6465
this.librariesSpecificationUri,
66+
this.packageConfigUri,
6567
this.compileSdk: false,
6668
this.targetFlags: const TestTargetFlags(),
6769
this.nnbdMode: NnbdMode.Weak});
@@ -322,6 +324,7 @@ Future<TestResult<T>> runTestForConfig<T>(
322324
options.compileSdk = config.compileSdk;
323325
}
324326
}
327+
options.packagesFileUri = config.packageConfigUri;
325328
config.customizeCompilerOptions(options, testData);
326329
InternalCompilerResult compilerResult = await compileScript(
327330
testData.memorySourceFiles,

pkg/front_end/test/fasta/parser/literal_entry_info_test.dart

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// @dart = 2.9
6-
75
import 'package:_fe_analyzer_shared/src/parser/parser.dart';
86
import 'package:_fe_analyzer_shared/src/parser/async_modifier.dart';
97
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart';
@@ -540,7 +538,7 @@ class CollectionElementTest {
540538
}
541539

542540
void parseEntry(String source, List<String> expectedCalls,
543-
{bool inAsync, List<ExpectedError> errors, String expectAfter}) {
541+
{bool? inAsync, List<ExpectedError>? errors, String? expectAfter}) {
544542
final start = scanString(source).tokens;
545543
final listener = new TestInfoListener();
546544
final parser = new Parser(listener,
@@ -556,9 +554,9 @@ class CollectionElementTest {
556554
throw e;
557555
}
558556
if (expectAfter != null) {
559-
expect(lastConsumed.next.lexeme, expectAfter);
557+
expect(lastConsumed.next!.lexeme, expectAfter);
560558
} else {
561-
expect(lastConsumed.next.isEof, isTrue, reason: lastConsumed.lexeme);
559+
expect(lastConsumed.next!.isEof, isTrue, reason: lastConsumed.lexeme);
562560
}
563561
}
564562
}
@@ -838,7 +836,7 @@ class MapElementTest {
838836
}
839837

840838
void parseEntry(String source, List<String> expectedCalls,
841-
{bool inAsync, List<ExpectedError> errors, String expectAfter}) {
839+
{bool? inAsync, List<ExpectedError>? errors, String? expectAfter}) {
842840
final start = scanString(source).tokens;
843841
final listener = new TestInfoListener();
844842
final parser = new Parser(listener,
@@ -854,16 +852,16 @@ class MapElementTest {
854852
throw e;
855853
}
856854
if (expectAfter != null) {
857-
expect(lastConsumed.next.lexeme, expectAfter);
855+
expect(lastConsumed.next!.lexeme, expectAfter);
858856
} else {
859-
expect(lastConsumed.next.isEof, isTrue, reason: lastConsumed.lexeme);
857+
expect(lastConsumed.next!.isEof, isTrue, reason: lastConsumed.lexeme);
860858
}
861859
}
862860
}
863861

864862
class TestInfoListener implements Listener {
865863
List<String> calls = <String>[];
866-
List<ExpectedError> errors;
864+
List<ExpectedError>? errors;
867865

868866
@override
869867
void beginBinaryExpression(Token token) {
@@ -876,7 +874,7 @@ class TestInfoListener implements Listener {
876874
}
877875

878876
@override
879-
void beginForControlFlow(Token awaitToken, Token forToken) {
877+
void beginForControlFlow(Token? awaitToken, Token forToken) {
880878
calls.add('beginForControlFlow $awaitToken $forToken');
881879
}
882880

@@ -907,7 +905,7 @@ class TestInfoListener implements Listener {
907905

908906
@override
909907
void beginVariablesDeclaration(
910-
Token token, Token lateToken, Token varFinalOrConst) {
908+
Token token, Token? lateToken, Token? varFinalOrConst) {
911909
// TODO(danrubel): update to include lateToken
912910
calls.add('beginVariablesDeclaration $token $varFinalOrConst');
913911
}
@@ -963,7 +961,7 @@ class TestInfoListener implements Listener {
963961
}
964962

965963
@override
966-
void endVariablesDeclaration(int count, Token endToken) {
964+
void endVariablesDeclaration(int count, Token? endToken) {
967965
calls.add('endVariablesDeclaration $count $endToken');
968966
}
969967

@@ -998,7 +996,7 @@ class TestInfoListener implements Listener {
998996
}
999997

1000998
@override
1001-
void handleForInLoopParts(Token awaitToken, Token forToken,
999+
void handleForInLoopParts(Token? awaitToken, Token forToken,
10021000
Token leftParenthesis, Token inKeyword) {
10031001
calls.add('handleForInLoopParts '
10041002
'$awaitToken $forToken $leftParenthesis $inKeyword');
@@ -1028,7 +1026,7 @@ class TestInfoListener implements Listener {
10281026

10291027
@override
10301028
void handleLiteralList(
1031-
int count, Token leftBracket, Token constKeyword, Token rightBracket) {
1029+
int count, Token leftBracket, Token? constKeyword, Token rightBracket) {
10321030
calls.add(
10331031
'handleLiteralList $count, $leftBracket, $constKeyword, $rightBracket');
10341032
}
@@ -1037,7 +1035,7 @@ class TestInfoListener implements Listener {
10371035
void handleLiteralSetOrMap(
10381036
int count,
10391037
Token leftBrace,
1040-
Token constKeyword,
1038+
Token? constKeyword,
10411039
Token rightBrace,
10421040
// TODO(danrubel): hasSetEntry parameter exists for replicating existing
10431041
// behavior and will be removed once unified collection has been enabled
@@ -1080,9 +1078,9 @@ class TestInfoListener implements Listener {
10801078
@override
10811079
void handleRecoverableError(
10821080
Message message, Token startToken, Token endToken) {
1083-
errors ??= <ExpectedError>[];
10841081
int offset = startToken.charOffset;
1085-
errors.add(error(message.code, offset, endToken.charEnd - offset));
1082+
(errors ??= <ExpectedError>[])
1083+
.add(error(message.code, offset, endToken.charEnd - offset));
10861084
}
10871085

10881086
@override

pkg/front_end/test/fasta/parser/token_stream_rewriter_test.dart

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// @dart = 2.9
6-
75
import 'package:_fe_analyzer_shared/src/parser/token_stream_rewriter.dart';
86
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart'
97
show ScannerResult, scanString;
@@ -39,7 +37,7 @@ abstract class TokenStreamRewriterTest {
3937

4038
TokenStreamRewriter rewriter = getTokenStreamRewriter();
4139
Token openParen = rewriter.insertParens(a, false);
42-
Token closeParen = openParen.next;
40+
Token closeParen = openParen.next!;
4341

4442
expect(openParen.lexeme, '(');
4543
expect(closeParen.lexeme, ')');
@@ -64,8 +62,8 @@ abstract class TokenStreamRewriterTest {
6462

6563
TokenStreamRewriter rewriter = getTokenStreamRewriter();
6664
Token openParen = rewriter.insertParens(a, true);
67-
Token identifier = openParen.next;
68-
Token closeParen = identifier.next;
65+
Token identifier = openParen.next!;
66+
Token closeParen = identifier.next!;
6967

7068
expect(openParen.lexeme, '(');
7169
expect(identifier.lexeme, '');
@@ -180,7 +178,7 @@ abstract class TokenStreamRewriterTest {
180178

181179
expect(a.next, same(replacement));
182180
expect(replacement.next, same(c));
183-
expect(c.next.isEof, true);
181+
expect(c.next!.isEof, true);
184182

185183
normalTestDone(rewriter, a);
186184
}
@@ -202,7 +200,7 @@ abstract class TokenStreamRewriterTest {
202200
expect(replacement.replacedToken, same(b));
203201

204202
expect(a.next, same(replacement));
205-
expect(replacement.next.isEof, true);
203+
expect(replacement.next!.isEof, true);
206204

207205
normalTestDone(rewriter, a);
208206
}
@@ -226,11 +224,11 @@ abstract class TokenStreamRewriterTest {
226224
expect(b.precedingComments, same(replacement.precedingComments));
227225
expect(replacement.replacedToken, same(b));
228226
expect(replacement.replacedToken.next, same(c));
229-
expect(replacement.replacedToken.next.next, same(d));
227+
expect(replacement.replacedToken.next!.next, same(d));
230228

231229
expect(a.next, same(replacement));
232230
expect(replacement.next, same(e));
233-
expect(e.next.isEof, true);
231+
expect(e.next!.isEof, true);
234232

235233
normalTestDone(rewriter, a);
236234
}
@@ -254,7 +252,7 @@ abstract class TokenStreamRewriterTest {
254252
expect(replacement.replacedToken.next, same(c));
255253

256254
expect(a.next, same(replacement));
257-
expect(replacement.next.isEof, true);
255+
expect(replacement.next!.isEof, true);
258256

259257
normalTestDone(rewriter, a);
260258
}
@@ -265,18 +263,18 @@ abstract class TokenStreamRewriterTest {
265263
Token firstToken = scanResult.tokens;
266264
setupDone(firstToken);
267265

268-
Token open = scanResult.tokens.next.next;
266+
Token open = scanResult.tokens.next!.next!;
269267
expect(open.lexeme, '(');
270-
Token close = open.endGroup;
268+
Token close = open.endGroup!;
271269
expect(close.isSynthetic, isTrue);
272-
expect(close.next.isEof, isTrue);
270+
expect(close.next!.isEof, isTrue);
273271
TokenStreamRewriter rewriter = getTokenStreamRewriter();
274272

275-
Token result = rewriter.moveSynthetic(open.next, close);
273+
Token result = rewriter.moveSynthetic(open.next!, close);
276274
expect(result, close);
277275
expect(open.endGroup, close);
278-
expect(open.next.next, close);
279-
expect(close.next.isEof, isFalse);
276+
expect(open.next!.next, close);
277+
expect(close.next!.isEof, isFalse);
280278

281279
normalTestDone(rewriter, firstToken);
282280
}
@@ -340,7 +338,7 @@ abstract class TokenStreamRewriterTest {
340338
}
341339

342340
StringToken _makeToken(int charOffset, String text) {
343-
return new StringToken.fromString(null, text, charOffset);
341+
return new StringToken.fromString(TokenType.IDENTIFIER, text, charOffset);
344342
}
345343
}
346344

@@ -384,34 +382,35 @@ class TokenStreamRewriterTest_Undoable extends TokenStreamRewriterTest {
384382
TokenStreamRewriter getTokenStreamRewriter() =>
385383
new UndoableTokenStreamRewriter();
386384

387-
List<CachedTokenSetup> setup;
385+
List<CachedTokenSetup>? setup;
388386

389387
@override
390388
void setupDone(Token first) {
391389
setup = [];
392-
Token token = first;
390+
Token? token = first;
393391
while (token != null && !token.isEof) {
394-
setup.add(new CachedTokenSetup(token));
392+
setup!.add(new CachedTokenSetup(token));
395393
token = token.next;
396394
}
397395
}
398396

399397
@override
400398
void normalTestDone(TokenStreamRewriter rewriter, Token first) {
401-
UndoableTokenStreamRewriter undoableTokenStreamRewriter = rewriter;
399+
UndoableTokenStreamRewriter undoableTokenStreamRewriter =
400+
rewriter as UndoableTokenStreamRewriter;
402401
undoableTokenStreamRewriter.undo();
403402
List<CachedTokenSetup> now = [];
404-
Token token = first;
403+
Token? token = first;
405404
while (token != null && !token.isEof) {
406405
now.add(new CachedTokenSetup(token));
407406
token = token.next;
408407
}
409-
if (setup.length != now.length) {
410-
throw "Different length: ${setup.length} vs ${now.length}";
408+
if (setup!.length != now.length) {
409+
throw "Different length: ${setup!.length} vs ${now.length}";
411410
}
412-
for (int i = 0; i < setup.length; i++) {
413-
if (setup[i] != now[i]) {
414-
throw "Different at $i: ${setup[i]} vs ${now[i]}";
411+
for (int i = 0; i < setup!.length; i++) {
412+
if (setup![i] != now[i]) {
413+
throw "Different at $i: ${setup![i]} vs ${now[i]}";
415414
}
416415
}
417416
setup = null;
@@ -420,9 +419,9 @@ class TokenStreamRewriterTest_Undoable extends TokenStreamRewriterTest {
420419

421420
class CachedTokenSetup {
422421
final Token token;
423-
final Token prev;
424-
final Token next;
425-
final Token precedingComments;
422+
final Token? prev;
423+
final Token? next;
424+
final Token? precedingComments;
426425

427426
CachedTokenSetup(this.token)
428427
: prev = token.previous,

pkg/front_end/test/fasta/tool_git_test.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// @dart = 2.9
6-
75
/// Tests the tool `pkg/front_end/tool/fasta`.
86
97
import "dart:io";

pkg/front_end/test/fasta/uri_translator_test.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// @dart = 2.9
6-
75
import 'package:_fe_analyzer_shared/src/util/libraries_specification.dart';
86
import 'package:front_end/src/fasta/uri_translator.dart';
97
import 'package:package_config/package_config.dart';
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"configVersion": 2,
3+
"packages": [
4+
{
5+
"name": "macro",
6+
"rootUri": "pkgs/macro/lib/"
7+
},
8+
{
9+
"name": "macro_builder",
10+
"rootUri": "pkgs/macro_builder/lib/"
11+
}
12+
]
13+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
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.
4+
5+
import 'package:macro_builder/macro_builder.dart';
6+
7+
class Macro1 implements Macro {
8+
const Macro1();
9+
}
10+
11+
class Macro2 implements Macro {
12+
const Macro2();
13+
}
14+
15+
class Macro3 implements Macro {
16+
const Macro3();
17+
}
18+
19+
class NonMacro {
20+
const NonMacro();
21+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
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.
4+
5+
export 'src/macro.dart';
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
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.
4+
5+
class Macro {}

0 commit comments

Comments
 (0)