Skip to content

Instantly share code, notes, and snippets.

@kallentu
Created June 20, 2024 22:21
Show Gist options
  • Save kallentu/f996adb3e4a9f5bc93e418a521d93460 to your computer and use it in GitHub Desktop.
Save kallentu/f996adb3e4a9f5bc93e418a521d93460 to your computer and use it in GitHub Desktop.
cfe failure on wildcard class type parameters
/==================================================================================================================\
| pkg/front_end/test/fasta/strong/wildcard_variables/class_type_parameters is new and failed (Fail, expected Pass) |
\==================================================================================================================/
library;
import self as self;
import "dart:core" as core;
typedef _ = self::BB;
class AA extends core::Object {
synthetic constructor •() → self::AA
: super core::Object::•()
;
}
class BB extends self::AA {
synthetic constructor •() → self::BB
: super self::AA::•()
;
}
class A<T extends core::Object? = dynamic, U extends self::AA> extends core::Object {
synthetic constructor •() → self::A<self::A::T%, self::A::U>
: super core::Object::•()
;
}
class B<_ extends core::Object? = dynamic, _ extends self::AA> extends self::A<self::BB, self::BB> {
synthetic constructor •() → self::B<self::B::_%, self::B::_>
: super self::A::•()
;
method foo<_ extends self::BB>([wildcard core::int _ = #C1]) → core::int
return 1;
}
class C<T extends core::Object? = dynamic, _ extends self::BB> extends self::A<self::C::T%, self::BB> {
static const field core::int _ = #C2;
synthetic constructor •() → self::C<self::C::T%, self::C::_>
: super self::A::•()
;
}
class D<_ extends core::Object? = dynamic, _ extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() → self::D<self::D::_%, self::D::_%>
: super core::Object::•()
;
}
class DoesNotUseTypeVariable<_ extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() → self::DoesNotUseTypeVariable<self::DoesNotUseTypeVariable::_%>
: super core::Object::•()
;
method returnsBB() → core::Type {
return #C3;
}
}
constants {
#C1 = 2
#C2 = 1
#C3 = TypeLiteralConstant(self::BB)
}
Wrote component to memory.
Compiled and got 1 libs
-> invalidating file:///b/s/w/ir/pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart
-> and got 1 libs
Work on file:///b/s/w/ir/pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart
Work on file:///b/s/w/ir/pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart
Found 8 chunks...
=> Split into file:///b/s/w/ir/pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.0.dart:
import 'class_type_parameters.dart';
typedef _ = BB;
-------------
=> Split into file:///b/s/w/ir/pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.1.dart:
import 'class_type_parameters.dart';
class AA {}
-------------
=> Split into file:///b/s/w/ir/pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.2.dart:
import 'class_type_parameters.dart';
class BB extends AA {}
-------------
=> Split into file:///b/s/w/ir/pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.3.dart:
import 'class_type_parameters.dart';
class A<T, U extends AA> {}
-------------
=> Split into file:///b/s/w/ir/pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.4.dart:
import 'class_type_parameters.dart';
class B<_, _ extends AA> extends A<_, _> {
int foo<_ extends _>([int _ = 2]) => 1;
}
-------------
=> Split into file:///b/s/w/ir/pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.5.dart:
import 'class_type_parameters.dart';
class C<T, _ extends _> extends A<T, _> {
static const int _ = 1;
}
-------------
=> Split into file:///b/s/w/ir/pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.6.dart:
import 'class_type_parameters.dart';
class D<_, _> {}
-------------
=> Split into file:///b/s/w/ir/pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.7.dart:
import 'class_type_parameters.dart';
class DoesNotUseTypeVariable<_> {
Type returnsBB() {
return _;
}
}
-------------
=> Main file becomes:
import 'class_type_parameters.dart.split.0.dart';
export 'class_type_parameters.dart.split.0.dart';
import 'class_type_parameters.dart.split.1.dart';
export 'class_type_parameters.dart.split.1.dart';
import 'class_type_parameters.dart.split.2.dart';
export 'class_type_parameters.dart.split.2.dart';
import 'class_type_parameters.dart.split.3.dart';
export 'class_type_parameters.dart.split.3.dart';
import 'class_type_parameters.dart.split.4.dart';
export 'class_type_parameters.dart.split.4.dart';
import 'class_type_parameters.dart.split.5.dart';
export 'class_type_parameters.dart.split.5.dart';
import 'class_type_parameters.dart.split.6.dart';
export 'class_type_parameters.dart.split.6.dart';
import 'class_type_parameters.dart.split.7.dart';
export 'class_type_parameters.dart.split.7.dart';
-------------
Compiled and got 9 libs
Errors upon compilation not compatible with forcing rebuild bodies. Got [(pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.4.dart:3:36: Error: Type '_' not found.
class B<_, _ extends AA> extends A<_, _> {
^), (pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.4.dart:3:39: Error: Type '_' not found.
class B<_, _ extends AA> extends A<_, _> {
^), (pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.4.dart:4:21: Error: Type '_' not found.
int foo<_ extends _>([int _ = 2]) => 1;
^), (pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.5.dart:3:22: Error: Type '_' not found.
class C<T, _ extends _> extends A<T, _> {
^), (pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.5.dart:3:38: Error: Type '_' not found.
class C<T, _ extends _> extends A<T, _> {
^), (pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.7.dart:5:12: Error: The getter '_' isn't defined for the class 'DoesNotUseTypeVariable<_>'.
- 'DoesNotUseTypeVariable' is from 'pkg/front_end/testcases/wildcard_variables/class_type_parameters.dart.split.7.dart'.
Try correcting the name to the name of an existing getter, or defining a getter or field named '_'.
return _;
^)]
To re-run this test, run:
dart --enable-asserts pkg/front_end/test/unit_test_suites.dart -p pkg/front_end/test/fasta/strong/wildcard_variables/class_type_parameters
The test has outcome semiFuzzFailureOnForceRebuildBodies, but was expected to have outcome(s) {Pass}. You might have to update the status file to the new outcome
There's a status entry looking something like
wildcard_variables/class_type_parameters: Pass
which should be updated.
The status file is file:///b/s/w/ir/pkg/front_end/testcases/strong.status.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment