[cfe] Report error on variable declaration in pattern assignment
Change-Id: I5d9f06309f915460dfc9fe9549b6e7d5c814ef3c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/280261 Reviewed-by: Chloe Stefantsova <cstefantsova@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
committed by
Commit Queue
parent
7d9dab0e7a
commit
3448fbc93c
@@ -10613,6 +10613,37 @@ const MessageCode messagePatchNonExternal = const MessageCode(
|
||||
r"""Can't apply this patch as its origin declaration isn't external.""",
|
||||
correctionMessage: r"""Try adding 'external' to the origin declaration.""");
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Template<
|
||||
Message Function(
|
||||
String
|
||||
name)> templatePatternAssignmentDeclaresVariable = const Template<
|
||||
Message Function(String name)>(
|
||||
problemMessageTemplate:
|
||||
r"""Variable '#name' can't be declared in a pattern assignment.""",
|
||||
correctionMessageTemplate:
|
||||
r"""Try using a preexisting variable or changing the assignment to a pattern variable declaration.""",
|
||||
withArguments: _withArgumentsPatternAssignmentDeclaresVariable);
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Code<Message Function(String name)>
|
||||
codePatternAssignmentDeclaresVariable =
|
||||
const Code<Message Function(String name)>(
|
||||
"PatternAssignmentDeclaresVariable",
|
||||
);
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
Message _withArgumentsPatternAssignmentDeclaresVariable(String name) {
|
||||
if (name.isEmpty) throw 'No name provided';
|
||||
name = demangleMixinApplicationName(name);
|
||||
return new Message(codePatternAssignmentDeclaresVariable,
|
||||
problemMessage:
|
||||
"""Variable '${name}' can't be declared in a pattern assignment.""",
|
||||
correctionMessage:
|
||||
"""Try using a preexisting variable or changing the assignment to a pattern variable declaration.""",
|
||||
arguments: {'name': name});
|
||||
}
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Code<Null> codePlatformPrivateLibraryAccess =
|
||||
messagePlatformPrivateLibraryAccess;
|
||||
|
||||
@@ -8889,21 +8889,27 @@ class BodyBuilder extends StackListenerImpl
|
||||
|
||||
reportIfNotEnabled(
|
||||
libraryFeatures.patterns, variable.charOffset, variable.charCount);
|
||||
// ignore: unused_local_variable
|
||||
TypeBuilder? type = pop(NullValues.TypeBuilder) as TypeBuilder?;
|
||||
DartType? patternType = type?.build(libraryBuilder, TypeUse.variableType);
|
||||
Pattern pattern;
|
||||
if (variable.lexeme == "_") {
|
||||
pattern = new WildcardPattern(patternType, variable.charOffset);
|
||||
} else if (inAssignmentPattern) {
|
||||
Expression variableUse =
|
||||
toValue(scopeLookup(scope, variable.lexeme, variable));
|
||||
if (variableUse is VariableGet) {
|
||||
pattern = new AssignedVariablePattern(variableUse.variable,
|
||||
offset: variable.charOffset);
|
||||
String name = variable.lexeme;
|
||||
if (keyword != null || type != null) {
|
||||
pattern = new InvalidPattern(buildProblem(
|
||||
fasta.templatePatternAssignmentDeclaresVariable.withArguments(name),
|
||||
variable.charOffset,
|
||||
variable.charCount));
|
||||
} else {
|
||||
// Recover by using [WildcardPattern] instead.
|
||||
pattern = new WildcardPattern(patternType, variable.charOffset);
|
||||
Expression variableUse = toValue(scopeLookup(scope, name, variable));
|
||||
if (variableUse is VariableGet) {
|
||||
pattern = new AssignedVariablePattern(variableUse.variable,
|
||||
offset: variable.charOffset);
|
||||
} else {
|
||||
// Recover by using [WildcardPattern] instead.
|
||||
pattern = new WildcardPattern(patternType, variable.charOffset);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
VariableDeclaration declaredVariable = forest.createVariableDeclaration(
|
||||
|
||||
@@ -836,6 +836,7 @@ PatchInjectionFailed/analyzerCode: Fail
|
||||
PatchInjectionFailed/example: Fail
|
||||
PatchNonExternal/analyzerCode: Fail
|
||||
PatchNonExternal/example: Fail
|
||||
PatternAssignmentDeclaresVariable/analyzerCode: Fail
|
||||
PlatformPrivateLibraryAccess/example: Fail
|
||||
PositionalAfterNamedArgument/example: Fail
|
||||
PositionalSuperParametersAndArguments/analyzerCode: Fail
|
||||
|
||||
@@ -6308,3 +6308,13 @@ UnnamedObjectPatternField:
|
||||
method(x) {
|
||||
if (x case int(5)) {}
|
||||
}
|
||||
|
||||
PatternAssignmentDeclaresVariable:
|
||||
problemMessage: "Variable '#name' can't be declared in a pattern assignment."
|
||||
correctionMessage: "Try using a preexisting variable or changing the assignment to a pattern variable declaration."
|
||||
experiments: patterns
|
||||
script: |
|
||||
method(x) {
|
||||
var y;
|
||||
[y, var z] = x;
|
||||
}
|
||||
|
||||
@@ -79,6 +79,7 @@ part(s)
|
||||
patch(es)
|
||||
patterns
|
||||
placing
|
||||
preexisting
|
||||
pubspec.yaml
|
||||
r
|
||||
re
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
class Class {
|
||||
dynamic field1;
|
||||
dynamic field2;
|
||||
}
|
||||
|
||||
method(x, y, z) {
|
||||
var a;
|
||||
(a, int b, final int c) = x;
|
||||
[a, final d] = y;
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:11: Error: Variable 'b' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// (a, int b, final int c) = x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:24: Error: Variable 'c' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// (a, int b, final int c) = x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:13:13: Error: Variable 'd' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// [a, final d] = y;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
class Class extends core::Object {
|
||||
field dynamic field1 = null;
|
||||
field dynamic field2 = null;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
||||
dynamic a;
|
||||
block {
|
||||
final dynamic #0#0 = x;
|
||||
if(!(#0#0 is{ForNonNullableByDefault} (core::Object?, core::Object?, core::Object?) && (let final dynamic #t1 = a = #0#0{(core::Object?, core::Object?, core::Object?)}.$1{core::Object?} in true) && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:11: Error: Variable 'b' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
(a, int b, final int c) = x;
|
||||
^" && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:24: Error: Variable 'c' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
(a, int b, final int c) = x;
|
||||
^"))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#0#0;
|
||||
block {
|
||||
final dynamic #1#0 = y;
|
||||
if(!(#1#0 is{ForNonNullableByDefault} core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t2 = a = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && (let final dynamic #t3 = #1#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:13:13: Error: Variable 'd' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
[a, final d] = y;
|
||||
^")))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#1#0;
|
||||
block {
|
||||
final dynamic #2#0 = z;
|
||||
late final dynamic #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic};
|
||||
late final dynamic #2#9 = #2#3{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic};
|
||||
late final dynamic #2#16 = #2#3{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic};
|
||||
if(!(#2#0 is{ForNonNullableByDefault} self::Class && (let final dynamic #t4 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^")))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:11: Error: Variable 'b' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// (a, int b, final int c) = x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:24: Error: Variable 'c' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// (a, int b, final int c) = x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:13:13: Error: Variable 'd' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// [a, final d] = y;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
class Class extends core::Object {
|
||||
field dynamic field1 = null;
|
||||
field dynamic field2 = null;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
||||
dynamic a;
|
||||
block {
|
||||
final dynamic #0#0 = x;
|
||||
if(!(#0#0 is{ForNonNullableByDefault} (core::Object?, core::Object?, core::Object?) && (let final core::Object? #t1 = a = #0#0{(core::Object?, core::Object?, core::Object?)}.$1{core::Object?} in true) && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:11: Error: Variable 'b' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
(a, int b, final int c) = x;
|
||||
^" && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:24: Error: Variable 'c' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
(a, int b, final int c) = x;
|
||||
^"))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#0#0;
|
||||
block {
|
||||
final dynamic #1#0 = y;
|
||||
if(!(#1#0 is{ForNonNullableByDefault} core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t2 = a = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && (let final dynamic #t3 = #1#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:13:13: Error: Variable 'd' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
[a, final d] = y;
|
||||
^")))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#1#0;
|
||||
block {
|
||||
final dynamic #2#0 = z;
|
||||
function ##2#3#initializer() → dynamic
|
||||
return #2#0{self::Class}.{self::Class::field2}{dynamic};
|
||||
late final dynamic #2#3 = ##2#3#initializer(){() → dynamic};
|
||||
function ##2#9#initializer() → dynamic
|
||||
return #2#3{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic};
|
||||
late final dynamic #2#9 = ##2#9#initializer(){() → dynamic};
|
||||
function ##2#16#initializer() → dynamic
|
||||
return #2#3{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic};
|
||||
late final dynamic #2#16 = ##2#16#initializer(){() → dynamic};
|
||||
if(!(#2#0 is{ForNonNullableByDefault} self::Class && (let final dynamic #t4 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^")))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
class Class {
|
||||
dynamic field1;
|
||||
dynamic field2;
|
||||
}
|
||||
|
||||
method(x, y, z) {}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
class Class {
|
||||
dynamic field1;
|
||||
dynamic field2;
|
||||
}
|
||||
|
||||
method(x, y, z) {}
|
||||
@@ -0,0 +1,81 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:11: Error: Variable 'b' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// (a, int b, final int c) = x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:24: Error: Variable 'c' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// (a, int b, final int c) = x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:13:13: Error: Variable 'd' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// [a, final d] = y;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
class Class extends core::Object {
|
||||
field dynamic field1 = null;
|
||||
field dynamic field2 = null;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
||||
dynamic a;
|
||||
block {
|
||||
final dynamic #0#0 = x;
|
||||
if(!(#0#0 is{ForNonNullableByDefault} (core::Object?, core::Object?, core::Object?) && (let final dynamic #t1 = a = #0#0{(core::Object?, core::Object?, core::Object?)}.$1{core::Object?} in true) && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:11: Error: Variable 'b' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
(a, int b, final int c) = x;
|
||||
^" && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:24: Error: Variable 'c' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
(a, int b, final int c) = x;
|
||||
^"))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#0#0;
|
||||
block {
|
||||
final dynamic #1#0 = y;
|
||||
if(!(#1#0 is{ForNonNullableByDefault} core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t2 = a = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && (let final dynamic #t3 = #1#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:13:13: Error: Variable 'd' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
[a, final d] = y;
|
||||
^")))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#1#0;
|
||||
block {
|
||||
final dynamic #2#0 = z;
|
||||
late final dynamic #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic};
|
||||
late final dynamic #2#9 = #2#3{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic};
|
||||
late final dynamic #2#16 = #2#3{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic};
|
||||
if(!(#2#0 is{ForNonNullableByDefault} self::Class && (let final dynamic #t4 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^")))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:11: Error: Variable 'b' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// (a, int b, final int c) = x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:24: Error: Variable 'c' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// (a, int b, final int c) = x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:13:13: Error: Variable 'd' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// [a, final d] = y;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
class Class extends core::Object {
|
||||
field dynamic field1 = null;
|
||||
field dynamic field2 = null;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
||||
dynamic a;
|
||||
block {
|
||||
final dynamic #0#0 = x;
|
||||
if(!(#0#0 is{ForNonNullableByDefault} (core::Object?, core::Object?, core::Object?) && (let final dynamic #t1 = a = #0#0{(core::Object?, core::Object?, core::Object?)}.$1{core::Object?} in true) && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:11: Error: Variable 'b' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
(a, int b, final int c) = x;
|
||||
^" && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:24: Error: Variable 'c' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
(a, int b, final int c) = x;
|
||||
^"))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#0#0;
|
||||
block {
|
||||
final dynamic #1#0 = y;
|
||||
if(!(#1#0 is{ForNonNullableByDefault} core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t2 = a = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && (let final dynamic #t3 = #1#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:13:13: Error: Variable 'd' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
[a, final d] = y;
|
||||
^")))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#1#0;
|
||||
block {
|
||||
final dynamic #2#0 = z;
|
||||
late final dynamic #2#3 = #2#0{self::Class}.{self::Class::field2}{dynamic};
|
||||
late final dynamic #2#9 = #2#3{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic};
|
||||
late final dynamic #2#16 = #2#3{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic};
|
||||
if(!(#2#0 is{ForNonNullableByDefault} self::Class && (let final dynamic #t4 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^")))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class Class extends core::Object {
|
||||
field dynamic field1;
|
||||
field dynamic field2;
|
||||
synthetic constructor •() → self::Class
|
||||
;
|
||||
}
|
||||
static method method(dynamic x, dynamic y, dynamic z) → dynamic
|
||||
;
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:11: Error: Variable 'b' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// (a, int b, final int c) = x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:24: Error: Variable 'c' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// (a, int b, final int c) = x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:13:13: Error: Variable 'd' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// [a, final d] = y;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
// Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
// Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:_internal" as _in;
|
||||
|
||||
class Class extends core::Object {
|
||||
field dynamic field1 = null;
|
||||
field dynamic field2 = null;
|
||||
synthetic constructor •() → self::Class
|
||||
: super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method method(dynamic x, dynamic y, dynamic z) → dynamic {
|
||||
dynamic a;
|
||||
block {
|
||||
final dynamic #0#0 = x;
|
||||
if(!(#0#0 is{ForNonNullableByDefault} (core::Object?, core::Object?, core::Object?) && (let final core::Object? #t1 = a = #0#0{(core::Object?, core::Object?, core::Object?)}.$1{core::Object?} in true) && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:11: Error: Variable 'b' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
(a, int b, final int c) = x;
|
||||
^" && invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:12:24: Error: Variable 'c' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
(a, int b, final int c) = x;
|
||||
^"))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#0#0;
|
||||
block {
|
||||
final dynamic #1#0 = y;
|
||||
if(!(#1#0 is{ForNonNullableByDefault} core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t2 = a = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true) && (let final dynamic #t3 = #1#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:13:13: Error: Variable 'd' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
[a, final d] = y;
|
||||
^")))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#1#0;
|
||||
block {
|
||||
final dynamic #2#0 = z;
|
||||
function ##2#3#initializer() → dynamic
|
||||
return #2#0{self::Class}.{self::Class::field2}{dynamic};
|
||||
late final dynamic #2#3 = ##2#3#initializer(){() → dynamic};
|
||||
function ##2#9#initializer() → dynamic
|
||||
return #2#3{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic};
|
||||
late final dynamic #2#9 = ##2#9#initializer(){() → dynamic};
|
||||
function ##2#16#initializer() → dynamic
|
||||
return #2#3{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic};
|
||||
late final dynamic #2#16 = ##2#16#initializer(){() → dynamic};
|
||||
if(!(#2#0 is{ForNonNullableByDefault} self::Class && (let final dynamic #t4 = a = #2#0{self::Class}.{self::Class::field1}{dynamic} in true) && (#2#3 is{ForNonNullableByDefault} core::List<dynamic> && #2#3{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (#2#9 is{ForNonNullableByDefault} core::List<dynamic> && #2#9{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t5 = #2#9{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:34: Error: Variable 'e' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^") && (let final dynamic #t6 = #2#9{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in true)) && (#2#16 is{ForNonNullableByDefault} core::List<dynamic> && #2#16{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && #C2 =={core::num::==}{(core::Object) → core::bool} #2#16{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} && (let final dynamic #t7 = #2#16{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic} in invalid-expression "pkg/front_end/testcases/patterns/pattern_assignment_declares.dart:14:49: Error: Variable 'f' can't be declared in a pattern assignment.
|
||||
Try using a preexisting variable or changing the assignment to a pattern variable declaration.
|
||||
Class(field1: a, field2: [[var e, _], [1, var f]]) = z;
|
||||
^")))))
|
||||
throw new _in::ReachabilityError::•();
|
||||
} =>#2#0;
|
||||
}
|
||||
|
||||
constants {
|
||||
#C1 = 2
|
||||
#C2 = 1
|
||||
}
|
||||
Reference in New Issue
Block a user