Version 2.18.0-189.0.dev
Merge commit 'd6e5a0fc49cf47a3bfc9dc47c23de6abcbfa3435' into 'dev'
diff --git a/pkg/analysis_server/lib/src/utilities/flutter.dart b/pkg/analysis_server/lib/src/utilities/flutter.dart
index 7132231..f423152 100644
--- a/pkg/analysis_server/lib/src/utilities/flutter.dart
+++ b/pkg/analysis_server/lib/src/utilities/flutter.dart
@@ -266,7 +266,8 @@
parent is IfElement && parent.elseElement == node ||
parent is ListLiteral ||
parent is NamedExpression && parent.expression == node ||
- parent is Statement) {
+ parent is Statement ||
+ parent is VariableDeclaration) {
return node as Expression;
}
}
diff --git a/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_builder_test.dart b/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_builder_test.dart
index 32237d6..65d5acd 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_builder_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_builder_test.dart
@@ -135,4 +135,25 @@
}
''');
}
+
+ Future<void> test_variableDeclaration() async {
+ await resolveTestCode('''
+import 'package:flutter/widgets.dart';
+
+void f() {
+ Widget w = /*caret*/Container();
+}
+''');
+ await assertHasAssist('''
+import 'package:flutter/widgets.dart';
+
+void f() {
+ Widget w = Builder(
+ builder: (context) {
+ return Container();
+ }
+ );
+}
+''');
+ }
}
diff --git a/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_center_test.dart b/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_center_test.dart
index 40bedd9..f894cfd 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_center_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_center_test.dart
@@ -120,4 +120,32 @@
}
''');
}
+
+ Future<void> test_variableDeclaration() async {
+ await resolveTestCode('''
+import 'package:flutter/widgets.dart';
+
+void f() {
+ Widget w = /*caret*/Container();
+}
+''');
+ await assertHasAssist('''
+import 'package:flutter/widgets.dart';
+
+void f() {
+ Widget w = Center(child: Container());
+}
+''');
+ }
+
+ Future<void> test_variableDeclaration_name() async {
+ await resolveTestCode('''
+import 'package:flutter/widgets.dart';
+
+void f() {
+ Widget /*caret*/w = Container();
+}
+''');
+ await assertNoAssist();
+ }
}
diff --git a/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_sized_box_test.dart b/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_sized_box_test.dart
index 32fdaeb..ed0c885 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_sized_box_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_sized_box_test.dart
@@ -122,4 +122,21 @@
}
''');
}
+
+ Future<void> test_variableDeclaration() async {
+ await resolveTestCode('''
+import 'package:flutter/widgets.dart';
+
+void f() {
+ Widget w = /*caret*/Container();
+}
+''');
+ await assertHasAssist('''
+import 'package:flutter/widgets.dart';
+
+void f() {
+ Widget w = SizedBox(child: Container());
+}
+''');
+ }
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
index 3bb84ee..e1cffbd 100644
--- a/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/constant_evaluator.dart
@@ -2689,7 +2689,7 @@
return unevaluated(
node,
new ConditionalExpression(extract(condition), extract(then),
- extract(otherwise), node.staticType));
+ extract(otherwise), env.substituteType(node.staticType)));
} else {
return createEvaluationErrorConstant(
node.condition,
diff --git a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
index 1017c52..c3f4254 100644
--- a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
@@ -48,22 +48,36 @@
Class? mapEntryClass;
+ /// Context information for the current closure, or `null` if we are not
+ /// inside a closure.
+ ClosureContext? _closureContext;
+
InferenceVisitor(this.inferrer);
+ ClosureContext get closureContext => _closureContext!;
+
/// Performs type inference on the given [statement].
///
- /// Derived classes should override this method with logic that dispatches on
- /// the statement type and calls the appropriate specialized "infer" method.
- StatementInferenceResult inferStatement(Statement statement) {
+ /// If [closureContext] is not null, the [statement] is inferred using
+ /// [closureContext] as the current context.
+ StatementInferenceResult inferStatement(Statement statement,
+ [ClosureContext? closureContext]) {
+ ClosureContext? oldClosureContext = _closureContext;
+ if (closureContext != null) {
+ _closureContext = closureContext;
+ }
inferrer.registerIfUnreachableForTesting(statement);
// For full (non-top level) inference, we need access to the
// ExpressionGeneratorHelper so that we can perform error recovery.
+ StatementInferenceResult result;
if (statement is InternalStatement) {
- return statement.acceptInference(this);
+ result = statement.acceptInference(this);
} else {
- return statement.accept(this);
+ result = statement.accept(this);
}
+ _closureContext = oldClosureContext;
+ return result;
}
/// Performs type inference on the given [expression].
@@ -6093,7 +6107,6 @@
@override
StatementInferenceResult visitReturnStatement(
covariant ReturnStatementImpl node) {
- ClosureContext closureContext = inferrer.closureContext!;
DartType typeContext = closureContext.returnContext;
DartType inferredType;
if (node.expression != null) {
@@ -7075,7 +7088,6 @@
@override
StatementInferenceResult visitYieldStatement(YieldStatement node) {
- ClosureContext closureContext = inferrer.closureContext!;
ExpressionInferenceResult expressionResult;
DartType typeContext = closureContext.yieldContext;
if (node.isYieldStar && typeContext is! UnknownType) {
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
index 49d5866..293bd91 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
@@ -275,10 +275,6 @@
InferenceHelper? _helper;
- /// Context information for the current closure, or `null` if we are not
- /// inside a closure.
- ClosureContext? closureContext;
-
TypeInferrerImpl(
this.engine,
this.uriForInstrumentation,
@@ -2047,7 +2043,6 @@
@override
ExpressionInferenceResult inferFieldInitializer(
InferenceHelper helper, DartType declaredType, Expression initializer) {
- assert(closureContext == null);
assert(!isTopLevel);
this.helper = helper;
InferenceVisitor visitor = _createInferenceVisitor();
@@ -2064,12 +2059,12 @@
DartType returnType, AsyncMarker asyncMarker, Statement body) {
// ignore: unnecessary_null_comparison
assert(body != null);
- // ignore: unnecessary_null_comparison
- assert(closureContext == null);
this.helper = helper;
- closureContext = new ClosureContext(this, asyncMarker, returnType, false);
+ ClosureContext closureContext =
+ new ClosureContext(this, asyncMarker, returnType, false);
InferenceVisitor visitor = _createInferenceVisitor();
- StatementInferenceResult result = visitor.inferStatement(body);
+ StatementInferenceResult result =
+ visitor.inferStatement(body, closureContext);
if (dataForTesting != null) {
if (!flowAnalysis.isReachable) {
dataForTesting!.flowAnalysisResult.functionBodiesThatDontComplete
@@ -2077,11 +2072,10 @@
}
}
result =
- closureContext!.handleImplicitReturn(this, body, result, fileOffset);
- DartType? futureValueType = closureContext!.futureValueType;
+ closureContext.handleImplicitReturn(this, body, result, fileOffset);
+ DartType? futureValueType = closureContext.futureValueType;
assert(!(asyncMarker == AsyncMarker.Async && futureValueType == null),
"No future value type computed.");
- closureContext = null;
_helper = null;
flowAnalysis.finish();
return new InferredFunctionBody(
@@ -2913,12 +2907,10 @@
// Apply type inference to `B` in return context `N’`, with any references
// to `xi` in `B` having type `Pi`. This produces `B’`.
bool needToSetReturnType = hasImplicitReturnType;
- ClosureContext? oldClosureContext = this.closureContext;
ClosureContext closureContext = new ClosureContext(
this, function.asyncMarker, returnContext, needToSetReturnType);
- this.closureContext = closureContext;
StatementInferenceResult bodyResult =
- visitor.inferStatement(function.body!);
+ visitor.inferStatement(function.body!, closureContext);
// If the closure is declared with `async*` or `sync*`, let `M` be the
// least upper bound of the types of the `yield` expressions in `B’`, or
@@ -2947,7 +2939,6 @@
if (bodyResult.hasChanged) {
function.body = bodyResult.statement..parent = function;
}
- this.closureContext = oldClosureContext;
return function.computeFunctionType(libraryBuilder.nonNullable);
}
@@ -4149,7 +4140,6 @@
Expression initializer,
DartType declaredType,
bool hasDeclaredInitializer) {
- assert(closureContext == null);
this.helper = helper;
// ignore: unnecessary_null_comparison
assert(declaredType != null);
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart
new file mode 100644
index 0000000..67b89d0
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart
@@ -0,0 +1,16 @@
+// Copyright (c) 2022, 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 Foo<T> {
+ const Foo(T Function(String)? foo) : _foo = foo ?? bar;
+ final T Function(String) _foo;
+}
+
+T bar<T>(String o) => o as T;
+
+void main() {
+ const Foo<int> myValue = Foo<int>(
+ bool.fromEnvironment("baz") ? int.parse : null,
+ );
+}
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.textual_outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.textual_outline.expect
new file mode 100644
index 0000000..81c0904
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+class Foo<T> {
+ const Foo(T Function(String)? foo) : _foo = foo ?? bar;
+ final T Function(String) _foo;
+}
+
+T bar<T>(String o) => o as T;
+void main() {}
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..bd416b5
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.textual_outline_modelled.expect
@@ -0,0 +1,8 @@
+T bar<T>(String o) => o as T;
+
+class Foo<T> {
+ const Foo(T Function(String)? foo) : _foo = foo ?? bar;
+ final T Function(String) _foo;
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.expect
new file mode 100644
index 0000000..7218dfd
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.expect
@@ -0,0 +1,29 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
+ final field (core::String) → self::Foo::T% _foo;
+ const constructor •((core::String) →? self::Foo::T% foo) → self::Foo<self::Foo::T%>
+ : self::Foo::_foo = let final (core::String) →? self::Foo::T% #t1 = foo in #t1 == null ?{(core::String) → self::Foo::T%} #C1<self::Foo::T%> : #t1{(core::String) → self::Foo::T%}, super core::Object::•()
+ ;
+}
+static method bar<T extends core::Object? = dynamic>(core::String o) → self::bar::T%
+ return o as{ForNonNullableByDefault} self::bar::T%;
+static method main() → void {
+ const self::Foo<core::int> myValue = #C5;
+}
+
+constants {
+ #C1 = static-tearoff self::bar
+ #C2 = "baz"
+ #C3 = static-tearoff core::int::parse
+ #C4 = null
+ #C5 = eval self::Foo<core::int*>{_foo:(const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4) == null ?{(core::String) → core::int*} #C1<core::int*> : const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue_49245.dart:
+- Foo. (from org-dartlang-testcase:///issue_49245.dart:6:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.modular.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.modular.expect
new file mode 100644
index 0000000..7218dfd
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.modular.expect
@@ -0,0 +1,29 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
+ final field (core::String) → self::Foo::T% _foo;
+ const constructor •((core::String) →? self::Foo::T% foo) → self::Foo<self::Foo::T%>
+ : self::Foo::_foo = let final (core::String) →? self::Foo::T% #t1 = foo in #t1 == null ?{(core::String) → self::Foo::T%} #C1<self::Foo::T%> : #t1{(core::String) → self::Foo::T%}, super core::Object::•()
+ ;
+}
+static method bar<T extends core::Object? = dynamic>(core::String o) → self::bar::T%
+ return o as{ForNonNullableByDefault} self::bar::T%;
+static method main() → void {
+ const self::Foo<core::int> myValue = #C5;
+}
+
+constants {
+ #C1 = static-tearoff self::bar
+ #C2 = "baz"
+ #C3 = static-tearoff core::int::parse
+ #C4 = null
+ #C5 = eval self::Foo<core::int*>{_foo:(const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4) == null ?{(core::String) → core::int*} #C1<core::int*> : const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4}
+}
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue_49245.dart:
+- Foo. (from org-dartlang-testcase:///issue_49245.dart:6:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.outline.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.outline.expect
new file mode 100644
index 0000000..f3e28e7b
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.outline.expect
@@ -0,0 +1,19 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
+ final field (core::String) → self::Foo::T% _foo;
+ const constructor •((core::String) →? self::Foo::T% foo) → self::Foo<self::Foo::T%>
+ : self::Foo::_foo = let final (core::String) →? self::Foo::T% #t1 = foo in #t1 == null ?{(core::String) → self::Foo::T%} self::bar<self::Foo::T%> : #t1{(core::String) → self::Foo::T%}, super core::Object::•()
+ ;
+}
+static method bar<T extends core::Object? = dynamic>(core::String o) → self::bar::T%
+ ;
+static method main() → void
+ ;
+
+
+Extra constant evaluation status:
+Evaluated: StaticTearOff @ org-dartlang-testcase:///issue_49245.dart:6:54 -> StaticTearOffConstant(bar)
+Extra constant evaluation: evaluated: 8, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.transformed.expect
new file mode 100644
index 0000000..5a4f3bf
--- /dev/null
+++ b/pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/issue_49245.dart.weak.transformed.expect
@@ -0,0 +1,33 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Foo<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
+ final field (core::String) → self::Foo::T% _foo;
+ const constructor •((core::String) →? self::Foo::T% foo) → self::Foo<self::Foo::T%>
+ : self::Foo::_foo = let final (core::String) →? self::Foo::T% #t1 = foo in #t1 == null ?{(core::String) → self::Foo::T%} #C1<self::Foo::T%> : #t1{(core::String) → self::Foo::T%}, super core::Object::•()
+ ;
+}
+static method bar<T extends core::Object? = dynamic>(core::String o) → self::bar::T%
+ return o as{ForNonNullableByDefault} self::bar::T%;
+static method main() → void {
+ const self::Foo<core::int> myValue = #C5;
+}
+
+constants {
+ #C1 = static-tearoff self::bar
+ #C2 = "baz"
+ #C3 = static-tearoff core::int::parse
+ #C4 = null
+ #C5 = eval self::Foo<core::int*>{_foo:(const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4) == null ?{(core::String) → core::int*} #C1<core::int*> : const core::bool::fromEnvironment(#C2) ?{(core::String, {onError: (core::String) →? core::int, radix: core::int?}) →? core::int} #C3 : #C4}
+}
+
+Extra constant evaluation status:
+Evaluated with empty environment: ConstantExpression @ org-dartlang-testcase:///issue_49245.dart:13:28 -> InstanceConstant(const Foo<int*>{Foo._foo: bar<int*>})
+Extra constant evaluation: evaluated: 10, effectively constant: 1
+
+
+Constructor coverage from constants:
+org-dartlang-testcase:///issue_49245.dart:
+- Foo. (from org-dartlang-testcase:///issue_49245.dart:6:9)
+- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index f805d8e..3eb31ff 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -21,7 +21,6 @@
late_lowering/private_members: SemiFuzzFailure # Reproduced in https://dart-review.googlesource.com/c/sdk/+/242285
macros/multiple_imports: SemiFuzzFailure # probably augment imports that isn't split correctly.
nnbd/constants: SemiFuzzFailure # Reproduced in https://dart-review.googlesource.com/c/sdk/+/242441
-nnbd/flutter_issue64155: SemiFuzzFailure # Reproduced in https://dart-review.googlesource.com/c/sdk/+/242443
# These tests have "privacy issues" and isn't compatiable with splitting files (fuzzing):
dart2js/mixin_default_values/main: semiFuzzFailureOnForceRebuildBodies # private method
@@ -41,6 +40,8 @@
none/mixin_super: semiFuzzFailureOnForceRebuildBodies # has private name mixin
dart2js/tear_off_patch/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
+super_parameters/circular_dependency_inference: SemiFuzzCrash # https://github.com/dart-lang/sdk/issues/49254
+
constructor_tearoffs/call_instantiation: TypeCheckError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
enhanced_enums/declared_hashcode: TypeCheckError
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index e309c17..a80885d 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -12,10 +12,10 @@
dart2js/tear_off_patch/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
general/constants/with_unevaluated_agnostic/various_2: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242441
-general/flutter_issue64155: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242443
general/no_such_method_forwarder: SemiFuzzFailure # https://dart-review.googlesource.com/c/sdk/+/242444
general/tear_off_patch/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
general/with_dependencies/issue_43084/issue_43084: SemiFuzzFailure # https://dart-review.googlesource.com/c/sdk/+/242543
+inference_update_1/horizontal_inference_extension_method: semiFuzzFailureOnForceRebuildBodies # Errors on split
inference_update_1/horizontal_inference_extension_method: SemiFuzzFailure # https://dart-review.googlesource.com/c/sdk/+/245004
late_lowering/issue41436b: SemiFuzzFailure # https://dart-review.googlesource.com/c/sdk/+/242445
late_lowering/issue41436c/issue41436c: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242445
@@ -29,13 +29,14 @@
nnbd_mixed/issue43988/main.no_link: SemiFuzzFailure # https://dart-review.googlesource.com/c/sdk/+/242540 and https://dart-review.googlesource.com/c/sdk/+/242446
nnbd_mixed/member_inheritance_from_opt_in: SemiFuzzFailure # https://dart-review.googlesource.com/c/sdk/+/242446
nnbd/constants: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242441
-nnbd/flutter_issue64155: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242443
no_such_method_forwarders/abstract_accessors_from_field_one_defined: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242444
no_such_method_forwarders/abstract_accessors_from_field_with_substitution: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242444
no_such_method_forwarders/abstract_accessors_from_field: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242444
no_such_method_forwarders/default_argument_values: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242444
variance/generic_covariance_sound_variance: SemiFuzzFailure # Looks similar to https://dart-review.googlesource.com/c/sdk/+/242444
+super_parameters/circular_dependency_inference: SemiFuzzCrash # https://github.com/dart-lang/sdk/issues/49254
+
dart2js/flutter_issue94561/main: SemiFuzzFailure
dart2js/flutter_issue94561/main.no_link: SemiFuzzFailure
dart2js/late_fields: SemiFuzzFailure
diff --git a/tools/VERSION b/tools/VERSION
index 1b33d07..3fa685a 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 18
PATCH 0
-PRERELEASE 188
+PRERELEASE 189
PRERELEASE_PATCH 0
\ No newline at end of file