blob: 6add5377f99a698cff6a67c21e8070e168287add [file] [log] [blame]
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:10: Error: A constructor tear-off can't have type arguments after the constructor name.
// Try removing the type arguments or placing them after the class name.
// A.named<int>.toString(); // error
// ^
//
import self as self;
import "dart:core" as core;
import "org-dartlang-testcase:///issue46719.dart" as self;
class A<T extends core::Object? = dynamic> extends core::Object {
constructor •() self::A<self::A::T%>
: super core::Object::•()
;
constructor named() self::A<self::A::T%>
: super core::Object::•()
;
method m<X extends core::Object? = dynamic>(self::A::m::X% x) core::List<self::A::m::X%>
return <self::A::m::X%>[x];
static method n<X extends core::Object? = dynamic>(self::A::n::X% x) core::List<self::A::n::X%>
return <self::A::n::X%>[x];
}
extension FunctionApplier on core::Function {
method applyAndPrint = self::FunctionApplier|applyAndPrint;
tearoff applyAndPrint = self::FunctionApplier|get#applyAndPrint;
}
static method m<X extends core::Object? = dynamic>(self::m::X% x) core::List<self::m::X%>
return <self::m::X%>[x];
static method FunctionApplier|applyAndPrint(lowered final core::Function #this, core::List<core::Object?> positionalArguments) → void
return core::print(core::Function::apply(#this, positionalArguments, #C1));
static method FunctionApplier|get#applyAndPrint(lowered final core::Function #this) → (core::List<core::Object?>) → void
return (core::List<core::Object?> positionalArguments) void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
static method test() dynamic {
invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue46719.dart:24:10: Error: A constructor tear-off can't have type arguments after the constructor name.
Try removing the type arguments or placing them after the class name.
A.named<int>.toString(); // error
^";
}
static method main() void {
self::A<dynamic> a = new self::A::•<dynamic>();
self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) core::List<X%>}<core::int>, <core::Object?>[2]);
self::FunctionApplier|applyAndPrint(a.{self::A::m}{<X extends core::Object? = dynamic>(X%) core::List<X%>}<core::String>, <core::Object?>["three"]);
self::FunctionApplier|applyAndPrint(#C3, <core::Object?>[2]);
self::FunctionApplier|applyAndPrint(#C4, <core::Object?>["three"]);
self::FunctionApplier|applyAndPrint(#C6, <core::Object?>[2]);
self::FunctionApplier|applyAndPrint(#C7, <core::Object?>["three"]);
self::FunctionApplier|applyAndPrint(#C3, <core::Object?>[2]);
self::FunctionApplier|applyAndPrint(#C4, <core::Object?>["three"]);
#C8.{core::Object::toString}(){() → core::String};
#C9.{core::Object::toString}(){() → core::String};
}
constants {
#C1 = <core::Symbol*, dynamic>{)
#C2 = static-tearoff self::A::n
#C3 = instantiation #C2 <core::int*>
#C4 = instantiation #C2 <core::String*>
#C5 = static-tearoff self::m
#C6 = instantiation #C5 <core::int*>
#C7 = instantiation #C5 <core::String*>
#C8 = constructor-tearoff self::A::named
#C9 = instantiation #C8 <core::int*>
}