[cfe] Remove language version from extensions tests

Change-Id: Ie380dda35cbf449669eb06d18cef284915dc748e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/239305
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
Johnni Winther
2022-04-08 11:20:08 +00:00
committed by Commit Bot
parent f5831de5b1
commit 08b776ac47
572 changed files with 12541 additions and 9305 deletions
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
// @dart=2.9
extension A on C {
void method() {}
int get getter => 42;
@@ -1,4 +1,3 @@
// @dart = 2.9
extension A on C {
void method() {}
int get getter => 42;
@@ -1,4 +1,3 @@
// @dart = 2.9
class C {}
errors(C c) {}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -150,21 +150,11 @@ import self as self;
import "dart:core" as core;
class C extends core::Object {
synthetic constructor •() → self::C*
synthetic constructor •() → self::C
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension A on self::C* {
extension A on self::C {
method method = self::A|method;
tearoff method = self::A|get#method;
get getter = self::A|get#getter;
@@ -174,7 +164,7 @@ extension A on self::C* {
operator [] = self::A|[];
set setter = self::A|set#setter;
}
extension B on self::C* {
extension B on self::C {
method method = self::B|method;
tearoff method = self::B|get#method;
get getter = self::B|get#getter;
@@ -184,33 +174,33 @@ extension B on self::C* {
set setter = self::B|set#setter;
set property = self::B|set#property;
}
static method A|method(lowered final self::C* #this) → void {}
static method A|get#method(lowered final self::C* #this) → () →* void
static method A|method(lowered final self::C #this) → void {}
static method A|get#method(lowered final self::C #this) → () → void
return () → void => self::A|method(#this);
static method A|get#getter(lowered final self::C* #this) → core::int*
static method A|get#getter(lowered final self::C #this) → core::int
return 42;
static method A|set#setter(lowered final self::C* #this, core::int* value) → void {}
static method A|get#property(lowered final self::C* #this) → core::int*
static method A|set#setter(lowered final self::C #this, core::int value) → void {}
static method A|get#property(lowered final self::C #this) → core::int
return 42;
static method A|+(lowered final self::C* #this, core::int* i) → core::int*
static method A|+(lowered final self::C #this, core::int i) → core::int
return i;
static method A|unary-(lowered final self::C* #this) → core::int*
static method A|unary-(lowered final self::C #this) → core::int
return 0;
static method A|[](lowered final self::C* #this, core::int* i) → core::int*
static method A|[](lowered final self::C #this, core::int i) → core::int
return i;
static method B|method(lowered final self::C* #this) → void {}
static method B|get#method(lowered final self::C* #this) → () →* void
static method B|method(lowered final self::C #this) → void {}
static method B|get#method(lowered final self::C #this) → () → void
return () → void => self::B|method(#this);
static method B|get#getter(lowered final self::C* #this) → core::int*
static method B|get#getter(lowered final self::C #this) → core::int
return 42;
static method B|set#setter(lowered final self::C* #this, core::int* value) → void {}
static method B|set#property(lowered final self::C* #this, core::int* value) → void {}
static method B|+(lowered final self::C* #this, core::int* i) → core::int*
static method B|set#setter(lowered final self::C #this, core::int value) → void {}
static method B|set#property(lowered final self::C #this, core::int value) → void {}
static method B|+(lowered final self::C #this, core::int i) → core::int
return i;
static method B|unary-(lowered final self::C* #this) → core::int*
static method B|unary-(lowered final self::C #this) → core::int
return 0;
static method B|[]=(lowered final self::C* #this, core::int* i, core::int* j) → void {}
static method errors(self::C* c) → dynamic {
static method B|[]=(lowered final self::C #this, core::int i, core::int j) → void {}
static method errors(self::C c) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/ambiguous.dart:28:5: Error: The method 'method' is defined in multiple extensions for 'C' and neither is more specific.
- 'C' is from 'pkg/front_end/testcases/extensions/ambiguous.dart'.
Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -150,21 +150,11 @@ import self as self;
import "dart:core" as core;
class C extends core::Object {
synthetic constructor •() → self::C*
synthetic constructor •() → self::C
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension A on self::C* {
extension A on self::C {
method method = self::A|method;
tearoff method = self::A|get#method;
get getter = self::A|get#getter;
@@ -174,7 +164,7 @@ extension A on self::C* {
operator [] = self::A|[];
set setter = self::A|set#setter;
}
extension B on self::C* {
extension B on self::C {
method method = self::B|method;
tearoff method = self::B|get#method;
get getter = self::B|get#getter;
@@ -184,33 +174,33 @@ extension B on self::C* {
set setter = self::B|set#setter;
set property = self::B|set#property;
}
static method A|method(lowered final self::C* #this) → void {}
static method A|get#method(lowered final self::C* #this) → () →* void
static method A|method(lowered final self::C #this) → void {}
static method A|get#method(lowered final self::C #this) → () → void
return () → void => self::A|method(#this);
static method A|get#getter(lowered final self::C* #this) → core::int*
static method A|get#getter(lowered final self::C #this) → core::int
return 42;
static method A|set#setter(lowered final self::C* #this, core::int* value) → void {}
static method A|get#property(lowered final self::C* #this) → core::int*
static method A|set#setter(lowered final self::C #this, core::int value) → void {}
static method A|get#property(lowered final self::C #this) → core::int
return 42;
static method A|+(lowered final self::C* #this, core::int* i) → core::int*
static method A|+(lowered final self::C #this, core::int i) → core::int
return i;
static method A|unary-(lowered final self::C* #this) → core::int*
static method A|unary-(lowered final self::C #this) → core::int
return 0;
static method A|[](lowered final self::C* #this, core::int* i) → core::int*
static method A|[](lowered final self::C #this, core::int i) → core::int
return i;
static method B|method(lowered final self::C* #this) → void {}
static method B|get#method(lowered final self::C* #this) → () →* void
static method B|method(lowered final self::C #this) → void {}
static method B|get#method(lowered final self::C #this) → () → void
return () → void => self::B|method(#this);
static method B|get#getter(lowered final self::C* #this) → core::int*
static method B|get#getter(lowered final self::C #this) → core::int
return 42;
static method B|set#setter(lowered final self::C* #this, core::int* value) → void {}
static method B|set#property(lowered final self::C* #this, core::int* value) → void {}
static method B|+(lowered final self::C* #this, core::int* i) → core::int*
static method B|set#setter(lowered final self::C #this, core::int value) → void {}
static method B|set#property(lowered final self::C #this, core::int value) → void {}
static method B|+(lowered final self::C #this, core::int i) → core::int
return i;
static method B|unary-(lowered final self::C* #this) → core::int*
static method B|unary-(lowered final self::C #this) → core::int
return 0;
static method B|[]=(lowered final self::C* #this, core::int* i, core::int* j) → void {}
static method errors(self::C* c) → dynamic {
static method B|[]=(lowered final self::C #this, core::int i, core::int j) → void {}
static method errors(self::C c) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/ambiguous.dart:28:5: Error: The method 'method' is defined in multiple extensions for 'C' and neither is more specific.
- 'C' is from 'pkg/front_end/testcases/extensions/ambiguous.dart'.
Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.
@@ -1,22 +1,12 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class C extends core::Object {
synthetic constructor •() → self::C*
synthetic constructor •() → self::C
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension A on self::C* {
extension A on self::C {
method method = self::A|method;
tearoff method = self::A|get#method;
get getter = self::A|get#getter;
@@ -26,7 +16,7 @@ extension A on self::C* {
operator [] = self::A|[];
set setter = self::A|set#setter;
}
extension B on self::C* {
extension B on self::C {
method method = self::B|method;
tearoff method = self::B|get#method;
get getter = self::B|get#getter;
@@ -36,39 +26,39 @@ extension B on self::C* {
set setter = self::B|set#setter;
set property = self::B|set#property;
}
static method A|method(lowered final self::C* #this) → void
static method A|method(lowered final self::C #this) → void
;
static method A|get#method(lowered final self::C* #this) → () →* void
static method A|get#method(lowered final self::C #this) → () → void
return () → void => self::A|method(#this);
static method A|get#getter(lowered final self::C* #this) → core::int*
static method A|get#getter(lowered final self::C #this) → core::int
;
static method A|set#setter(lowered final self::C* #this, core::int* value) → void
static method A|set#setter(lowered final self::C #this, core::int value) → void
;
static method A|get#property(lowered final self::C* #this) → core::int*
static method A|get#property(lowered final self::C #this) → core::int
;
static method A|+(lowered final self::C* #this, core::int* i) → core::int*
static method A|+(lowered final self::C #this, core::int i) → core::int
;
static method A|unary-(lowered final self::C* #this) → core::int*
static method A|unary-(lowered final self::C #this) → core::int
;
static method A|[](lowered final self::C* #this, core::int* i) → core::int*
static method A|[](lowered final self::C #this, core::int i) → core::int
;
static method B|method(lowered final self::C* #this) → void
static method B|method(lowered final self::C #this) → void
;
static method B|get#method(lowered final self::C* #this) → () →* void
static method B|get#method(lowered final self::C #this) → () → void
return () → void => self::B|method(#this);
static method B|get#getter(lowered final self::C* #this) → core::int*
static method B|get#getter(lowered final self::C #this) → core::int
;
static method B|set#setter(lowered final self::C* #this, core::int* value) → void
static method B|set#setter(lowered final self::C #this, core::int value) → void
;
static method B|set#property(lowered final self::C* #this, core::int* value) → void
static method B|set#property(lowered final self::C #this, core::int value) → void
;
static method B|+(lowered final self::C* #this, core::int* i) → core::int*
static method B|+(lowered final self::C #this, core::int i) → core::int
;
static method B|unary-(lowered final self::C* #this) → core::int*
static method B|unary-(lowered final self::C #this) → core::int
;
static method B|[]=(lowered final self::C* #this, core::int* i, core::int* j) → void
static method B|[]=(lowered final self::C #this, core::int i, core::int j) → void
;
static method errors(self::C* c) → dynamic
static method errors(self::C c) → dynamic
;
static method main() → dynamic
;
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -150,21 +150,11 @@ import self as self;
import "dart:core" as core;
class C extends core::Object {
synthetic constructor •() → self::C*
synthetic constructor •() → self::C
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension A on self::C* {
extension A on self::C {
method method = self::A|method;
tearoff method = self::A|get#method;
get getter = self::A|get#getter;
@@ -174,7 +164,7 @@ extension A on self::C* {
operator [] = self::A|[];
set setter = self::A|set#setter;
}
extension B on self::C* {
extension B on self::C {
method method = self::B|method;
tearoff method = self::B|get#method;
get getter = self::B|get#getter;
@@ -184,33 +174,33 @@ extension B on self::C* {
set setter = self::B|set#setter;
set property = self::B|set#property;
}
static method A|method(lowered final self::C* #this) → void {}
static method A|get#method(lowered final self::C* #this) → () →* void
static method A|method(lowered final self::C #this) → void {}
static method A|get#method(lowered final self::C #this) → () → void
return () → void => self::A|method(#this);
static method A|get#getter(lowered final self::C* #this) → core::int*
static method A|get#getter(lowered final self::C #this) → core::int
return 42;
static method A|set#setter(lowered final self::C* #this, core::int* value) → void {}
static method A|get#property(lowered final self::C* #this) → core::int*
static method A|set#setter(lowered final self::C #this, core::int value) → void {}
static method A|get#property(lowered final self::C #this) → core::int
return 42;
static method A|+(lowered final self::C* #this, core::int* i) → core::int*
static method A|+(lowered final self::C #this, core::int i) → core::int
return i;
static method A|unary-(lowered final self::C* #this) → core::int*
static method A|unary-(lowered final self::C #this) → core::int
return 0;
static method A|[](lowered final self::C* #this, core::int* i) → core::int*
static method A|[](lowered final self::C #this, core::int i) → core::int
return i;
static method B|method(lowered final self::C* #this) → void {}
static method B|get#method(lowered final self::C* #this) → () →* void
static method B|method(lowered final self::C #this) → void {}
static method B|get#method(lowered final self::C #this) → () → void
return () → void => self::B|method(#this);
static method B|get#getter(lowered final self::C* #this) → core::int*
static method B|get#getter(lowered final self::C #this) → core::int
return 42;
static method B|set#setter(lowered final self::C* #this, core::int* value) → void {}
static method B|set#property(lowered final self::C* #this, core::int* value) → void {}
static method B|+(lowered final self::C* #this, core::int* i) → core::int*
static method B|set#setter(lowered final self::C #this, core::int value) → void {}
static method B|set#property(lowered final self::C #this, core::int value) → void {}
static method B|+(lowered final self::C #this, core::int i) → core::int
return i;
static method B|unary-(lowered final self::C* #this) → core::int*
static method B|unary-(lowered final self::C #this) → core::int
return 0;
static method B|[]=(lowered final self::C* #this, core::int* i, core::int* j) → void {}
static method errors(self::C* c) → dynamic {
static method B|[]=(lowered final self::C #this, core::int i, core::int j) → void {}
static method errors(self::C c) → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/ambiguous.dart:28:5: Error: The method 'method' is defined in multiple extensions for 'C' and neither is more specific.
- 'C' is from 'pkg/front_end/testcases/extensions/ambiguous.dart'.
Try using an explicit extension application of the wanted extension or hiding unwanted extensions from scope.
@@ -2,8 +2,6 @@
// 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.
// @dart=2.9
class Class {
@pragma('dart2js:noInline')
instanceMethod() {}
@@ -1,4 +1,3 @@
// @dart = 2.9
class Class {
@pragma('dart2js:noInline')
instanceMethod() {}
@@ -1,4 +1,3 @@
// @dart = 2.9
class Class {
@pragma('dart2js:noInline')
instanceMethod() {}
@@ -1,34 +1,24 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
: super core::Object::•()
;
@#C3
method instanceMethod() → dynamic {}
@#C3
static method staticMethod() → dynamic {}
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
tearoff extensionInstanceMethod = self::Extension|get#extensionInstanceMethod;
static method extensionStaticMethod = self::Extension|extensionStaticMethod;
}
@#C3
static method Extension|extensionInstanceMethod(lowered final self::Class* #this) → dynamic {}
static method Extension|get#extensionInstanceMethod(lowered final self::Class* #this) → () →* dynamic
static method Extension|extensionInstanceMethod(lowered final self::Class #this) → dynamic {}
static method Extension|get#extensionInstanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|extensionInstanceMethod(#this);
@#C3
static method Extension|extensionStaticMethod() → dynamic {}
@@ -1,34 +1,24 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
: super core::Object::•()
;
@#C3
method instanceMethod() → dynamic {}
@#C3
static method staticMethod() → dynamic {}
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
tearoff extensionInstanceMethod = self::Extension|get#extensionInstanceMethod;
static method extensionStaticMethod = self::Extension|extensionStaticMethod;
}
@#C3
static method Extension|extensionInstanceMethod(lowered final self::Class* #this) → dynamic {}
static method Extension|get#extensionInstanceMethod(lowered final self::Class* #this) → () →* dynamic
static method Extension|extensionInstanceMethod(lowered final self::Class #this) → dynamic {}
static method Extension|get#extensionInstanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|extensionInstanceMethod(#this);
@#C3
static method Extension|extensionStaticMethod() → dynamic {}
@@ -1,9 +1,9 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
;
@core::pragma::_("dart2js:noInline")
method instanceMethod() → dynamic
@@ -11,26 +11,16 @@ class Class extends core::Object {
@core::pragma::_("dart2js:noInline")
static method staticMethod() → dynamic
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
tearoff extensionInstanceMethod = self::Extension|get#extensionInstanceMethod;
static method extensionStaticMethod = self::Extension|extensionStaticMethod;
}
@core::pragma::_("dart2js:noInline")
static method Extension|extensionInstanceMethod(lowered final self::Class* #this) → dynamic
static method Extension|extensionInstanceMethod(lowered final self::Class #this) → dynamic
;
static method Extension|get#extensionInstanceMethod(lowered final self::Class* #this) → () →* dynamic
static method Extension|get#extensionInstanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|extensionInstanceMethod(#this);
@core::pragma::_("dart2js:noInline")
static method Extension|extensionStaticMethod() → dynamic
@@ -43,9 +33,9 @@ static method main() → dynamic
Extra constant evaluation status:
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:8:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:11:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:16:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:19:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:23:2 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:6:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:9:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:14:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:17:4 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///annotations.dart:21:2 -> InstanceConstant(const pragma{pragma.name: "dart2js:noInline", pragma.options: null})
Extra constant evaluation: evaluated: 8, effectively constant: 5
@@ -1,34 +1,24 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
: super core::Object::•()
;
@#C3
method instanceMethod() → dynamic {}
@#C3
static method staticMethod() → dynamic {}
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method extensionInstanceMethod = self::Extension|extensionInstanceMethod;
tearoff extensionInstanceMethod = self::Extension|get#extensionInstanceMethod;
static method extensionStaticMethod = self::Extension|extensionStaticMethod;
}
@#C3
static method Extension|extensionInstanceMethod(lowered final self::Class* #this) → dynamic {}
static method Extension|get#extensionInstanceMethod(lowered final self::Class* #this) → () →* dynamic
static method Extension|extensionInstanceMethod(lowered final self::Class #this) → dynamic {}
static method Extension|get#extensionInstanceMethod(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|extensionInstanceMethod(#this);
@#C3
static method Extension|extensionStaticMethod() → dynamic {}
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
// @dart=2.9
extension Extension on int {
syncStarMethod() sync* {}
asyncMethod() async {}
@@ -1,4 +1,3 @@
// @dart = 2.9
extension Extension on int {
syncStarMethod() sync* {}
asyncMethod() async {}
@@ -1,4 +1,3 @@
// @dart = 2.9
extension Extension on int {
asyncMethod() async {}
asyncStarMethod() async* {}
@@ -1,8 +1,8 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
extension Extension on core::int* {
extension Extension on core::int {
method syncStarMethod = self::Extension|syncStarMethod;
tearoff syncStarMethod = self::Extension|get#syncStarMethod;
method asyncMethod = self::Extension|asyncMethod;
@@ -10,14 +10,14 @@ extension Extension on core::int* {
method asyncStarMethod = self::Extension|asyncStarMethod;
tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
static method Extension|syncStarMethod(lowered final core::int* #this) → dynamic sync* {}
static method Extension|get#syncStarMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* {}
static method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
static method Extension|asyncMethod(lowered final core::int* #this) → dynamic async /* futureValueType= dynamic */ {}
static method Extension|get#asyncMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* futureValueType= dynamic */ {}
static method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
static method Extension|asyncStarMethod(lowered final core::int* #this) → dynamic async* {}
static method Extension|get#asyncStarMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* {}
static method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {
self::Extension|syncStarMethod(0);
@@ -1,8 +1,8 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
extension Extension on core::int* {
extension Extension on core::int {
method syncStarMethod = self::Extension|syncStarMethod;
tearoff syncStarMethod = self::Extension|get#syncStarMethod;
method asyncMethod = self::Extension|asyncMethod;
@@ -10,14 +10,14 @@ extension Extension on core::int* {
method asyncStarMethod = self::Extension|asyncStarMethod;
tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
static method Extension|syncStarMethod(lowered final core::int* #this) → dynamic sync* {}
static method Extension|get#syncStarMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* {}
static method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
static method Extension|asyncMethod(lowered final core::int* #this) → dynamic async /* futureValueType= dynamic */ {}
static method Extension|get#asyncMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* futureValueType= dynamic */ {}
static method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
static method Extension|asyncStarMethod(lowered final core::int* #this) → dynamic async* {}
static method Extension|get#asyncStarMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* {}
static method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {
self::Extension|syncStarMethod(0);
@@ -1,8 +1,8 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
extension Extension on core::int* {
extension Extension on core::int {
method syncStarMethod = self::Extension|syncStarMethod;
tearoff syncStarMethod = self::Extension|get#syncStarMethod;
method asyncMethod = self::Extension|asyncMethod;
@@ -10,17 +10,17 @@ extension Extension on core::int* {
method asyncStarMethod = self::Extension|asyncStarMethod;
tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
static method Extension|syncStarMethod(lowered final core::int* #this) → dynamic sync*
static method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync*
;
static method Extension|get#syncStarMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
static method Extension|asyncMethod(lowered final core::int* #this) → dynamic async
static method Extension|asyncMethod(lowered final core::int #this) → dynamic async
;
static method Extension|get#asyncMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
static method Extension|asyncStarMethod(lowered final core::int* #this) → dynamic async*
static method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async*
;
static method Extension|get#asyncStarMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic
;
@@ -1,9 +1,9 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
extension Extension on core::int* {
extension Extension on core::int {
method syncStarMethod = self::Extension|syncStarMethod;
tearoff syncStarMethod = self::Extension|get#syncStarMethod;
method asyncMethod = self::Extension|asyncMethod;
@@ -11,11 +11,11 @@ extension Extension on core::int* {
method asyncStarMethod = self::Extension|asyncStarMethod;
tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
static method Extension|syncStarMethod(lowered final core::int* #this) → dynamic /* originally sync* */ {
function :sync_op_gen() → (core::_SyncIterator<dynamic>*, dynamic, dynamic) →* core::bool* {
core::int* :await_jump_var = 0;
static method Extension|syncStarMethod(lowered final core::int #this) → dynamic /* originally sync* */ {
function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
core::int :await_jump_var = 0;
dynamic :await_ctx_var;
function :sync_op(core::_SyncIterator<dynamic>* :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
{}
return false;
}
@@ -23,15 +23,15 @@ static method Extension|syncStarMethod(lowered final core::int* #this) → dynam
}
return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
}
static method Extension|get#syncStarMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
static method Extension|asyncMethod(lowered final core::int* #this) → dynamic /* futureValueType= dynamic */ /* originally async */ {
final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
static method Extension|asyncMethod(lowered final core::int #this) → dynamic /* futureValueType= dynamic */ /* originally async */ {
final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
core::bool* :is_sync = false;
dynamic :return_value;
(dynamic) →* dynamic :async_op_then;
(core::Object*, core::StackTrace*) →* dynamic :async_op_error;
core::int* :await_jump_var = 0;
(dynamic) → dynamic :async_op_then;
(core::Object, core::StackTrace) → dynamic :async_op_error;
core::int :await_jump_var = 0;
dynamic :await_ctx_var;
function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
try {
@@ -40,23 +40,23 @@ static method Extension|asyncMethod(lowered final core::int* #this) → dynamic
asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
return;
}
on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
}
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
:async_op(null, null){() →* dynamic};
:async_op(null, null){() → dynamic};
:is_sync = true;
return :async_future;
}
static method Extension|get#asyncMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
static method Extension|asyncStarMethod(lowered final core::int* #this) → dynamic /* originally async* */ {
asy::_AsyncStarStreamController<dynamic>* :controller;
static method Extension|asyncStarMethod(lowered final core::int #this) → dynamic /* originally async* */ {
asy::_AsyncStarStreamController<dynamic>? :controller;
dynamic :controller_stream;
(dynamic) →* dynamic :async_op_then;
(core::Object*, core::StackTrace*) →* dynamic :async_op_error;
core::int* :await_jump_var = 0;
(dynamic) → dynamic :async_op_then;
(core::Object, core::StackTrace) → dynamic :async_op_error;
core::int :await_jump_var = 0;
dynamic :await_ctx_var;
function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
try
@@ -65,7 +65,7 @@ static method Extension|asyncStarMethod(lowered final core::int* #this) → dyna
{}
return;
}
on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
:controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
}
finally {
@@ -77,7 +77,7 @@ static method Extension|asyncStarMethod(lowered final core::int* #this) → dyna
:controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
return :controller_stream;
}
static method Extension|get#asyncStarMethod(lowered final core::int* #this) → () →* dynamic
static method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {
self::Extension|syncStarMethod(0);
@@ -1,7 +1,7 @@
// Copyright (c) 2020, 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.
// @dart=2.9
extension Extension1<T extends Object> on T {
method1<S extends Object>() {}
method2<S extends String>() {}
@@ -1,4 +1,3 @@
// @dart = 2.9
extension Extension1<T extends Object> on T {
method1<S extends Object>() {}
method2<S extends String>() {}
@@ -1,4 +1,3 @@
// @dart = 2.9
extension Extension1<T extends Object> on T {
method1<S extends Object>() {}
method2<S extends String>() {}
@@ -1,8 +1,8 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
extension Extension1<T extends core::Object*> on T* {
extension Extension1<T extends core::Object> on T {
method method1 = self::Extension1|method1;
tearoff method1 = self::Extension1|get#method1;
method method2 = self::Extension1|method2;
@@ -12,7 +12,7 @@ extension Extension1<T extends core::Object*> on T* {
method method4 = self::Extension1|method4;
tearoff method4 = self::Extension1|get#method4;
}
extension Extension2<T extends core::String*> on T* {
extension Extension2<T extends core::String> on T {
method method1 = self::Extension2|method1;
tearoff method1 = self::Extension2|get#method1;
method method2 = self::Extension2|method2;
@@ -22,7 +22,7 @@ extension Extension2<T extends core::String*> on T* {
method method4 = self::Extension2|method4;
tearoff method4 = self::Extension2|get#method4;
}
extension Extension3<T extends dynamic> on T* {
extension Extension3<T extends dynamic> on T% {
method method1 = self::Extension3|method1;
tearoff method1 = self::Extension3|get#method1;
method method2 = self::Extension3|method2;
@@ -32,7 +32,7 @@ extension Extension3<T extends dynamic> on T* {
method method4 = self::Extension3|method4;
tearoff method4 = self::Extension3|get#method4;
}
extension Extension4<T extends core::Object* = dynamic> on T* {
extension Extension4<T extends core::Object? = dynamic> on T% {
method method1 = self::Extension4|method1;
tearoff method1 = self::Extension4|get#method1;
method method2 = self::Extension4|method2;
@@ -42,52 +42,52 @@ extension Extension4<T extends core::Object* = dynamic> on T* {
method method4 = self::Extension4|method4;
tearoff method4 = self::Extension4|get#method4;
}
static method Extension1|method1<T extends core::Object*, S extends core::Object*>(lowered final self::Extension1|method1::T* #this) → dynamic {}
static method Extension1|get#method1<T extends core::Object*>(lowered final self::Extension1|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T*, S*>(#this);
static method Extension1|method2<T extends core::Object*, S extends core::String*>(lowered final self::Extension1|method2::T* #this) → dynamic {}
static method Extension1|get#method2<T extends core::Object*>(lowered final self::Extension1|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T*, S*>(#this);
static method Extension1|method3<T extends core::Object*, S extends dynamic>(lowered final self::Extension1|method3::T* #this) → dynamic {}
static method Extension1|get#method3<T extends core::Object*>(lowered final self::Extension1|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T*, S%>(#this);
static method Extension1|method4<T extends core::Object*, S extends core::Object* = dynamic>(lowered final self::Extension1|method4::T* #this) → dynamic {}
static method Extension1|get#method4<T extends core::Object*>(lowered final self::Extension1|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T*, S*>(#this);
static method Extension2|method1<T extends core::String*, S extends core::Object*>(lowered final self::Extension2|method1::T* #this) → dynamic {}
static method Extension2|get#method1<T extends core::String*>(lowered final self::Extension2|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T*, S*>(#this);
static method Extension2|method2<T extends core::String*, S extends core::String*>(lowered final self::Extension2|method2::T* #this) → dynamic {}
static method Extension2|get#method2<T extends core::String*>(lowered final self::Extension2|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T*, S*>(#this);
static method Extension2|method3<T extends core::String*, S extends dynamic>(lowered final self::Extension2|method3::T* #this) → dynamic {}
static method Extension2|get#method3<T extends core::String*>(lowered final self::Extension2|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T*, S%>(#this);
static method Extension2|method4<T extends core::String*, S extends core::Object* = dynamic>(lowered final self::Extension2|method4::T* #this) → dynamic {}
static method Extension2|get#method4<T extends core::String*>(lowered final self::Extension2|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T*, S*>(#this);
static method Extension3|method1<T extends dynamic, S extends core::Object*>(lowered final self::Extension3|method1::T* #this) → dynamic {}
static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S*>(#this);
static method Extension3|method2<T extends dynamic, S extends core::String*>(lowered final self::Extension3|method2::T* #this) → dynamic {}
static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S*>(#this);
static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T* #this) → dynamic {}
static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T* #this) → <S extends dynamic>() →* dynamic
static method Extension1|method1<T extends core::Object, S extends core::Object>(lowered final self::Extension1|method1::T #this) → dynamic {}
static method Extension1|get#method1<T extends core::Object>(lowered final self::Extension1|get#method1::T #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T, S>(#this);
static method Extension1|method2<T extends core::Object, S extends core::String>(lowered final self::Extension1|method2::T #this) → dynamic {}
static method Extension1|get#method2<T extends core::Object>(lowered final self::Extension1|get#method2::T #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T, S>(#this);
static method Extension1|method3<T extends core::Object, S extends dynamic>(lowered final self::Extension1|method3::T #this) → dynamic {}
static method Extension1|get#method3<T extends core::Object>(lowered final self::Extension1|get#method3::T #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T, S%>(#this);
static method Extension1|method4<T extends core::Object, S extends core::Object? = dynamic>(lowered final self::Extension1|method4::T #this) → dynamic {}
static method Extension1|get#method4<T extends core::Object>(lowered final self::Extension1|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T, S%>(#this);
static method Extension2|method1<T extends core::String, S extends core::Object>(lowered final self::Extension2|method1::T #this) → dynamic {}
static method Extension2|get#method1<T extends core::String>(lowered final self::Extension2|get#method1::T #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T, S>(#this);
static method Extension2|method2<T extends core::String, S extends core::String>(lowered final self::Extension2|method2::T #this) → dynamic {}
static method Extension2|get#method2<T extends core::String>(lowered final self::Extension2|get#method2::T #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T, S>(#this);
static method Extension2|method3<T extends core::String, S extends dynamic>(lowered final self::Extension2|method3::T #this) → dynamic {}
static method Extension2|get#method3<T extends core::String>(lowered final self::Extension2|get#method3::T #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T, S%>(#this);
static method Extension2|method4<T extends core::String, S extends core::Object? = dynamic>(lowered final self::Extension2|method4::T #this) → dynamic {}
static method Extension2|get#method4<T extends core::String>(lowered final self::Extension2|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T, S%>(#this);
static method Extension3|method1<T extends dynamic, S extends core::Object>(lowered final self::Extension3|method1::T% #this) → dynamic {}
static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T% #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S>(#this);
static method Extension3|method2<T extends dynamic, S extends core::String>(lowered final self::Extension3|method2::T% #this) → dynamic {}
static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T% #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S>(#this);
static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T% #this) → dynamic {}
static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension3|method3<self::Extension3|get#method3::T%, S%>(#this);
static method Extension3|method4<T extends dynamic, S extends core::Object* = dynamic>(lowered final self::Extension3|method4::T* #this) → dynamic {}
static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S*>(#this);
static method Extension4|method1<T extends core::Object* = dynamic, S extends core::Object*>(lowered final self::Extension4|method1::T* #this) → dynamic {}
static method Extension4|get#method1<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T*, S*>(#this);
static method Extension4|method2<T extends core::Object* = dynamic, S extends core::String*>(lowered final self::Extension4|method2::T* #this) → dynamic {}
static method Extension4|get#method2<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T*, S*>(#this);
static method Extension4|method3<T extends core::Object* = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T* #this) → dynamic {}
static method Extension4|get#method3<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T*, S%>(#this);
static method Extension4|method4<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::Extension4|method4::T* #this) → dynamic {}
static method Extension4|get#method4<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T*, S*>(#this);
static method Extension3|method4<T extends dynamic, S extends core::Object? = dynamic>(lowered final self::Extension3|method4::T% #this) → dynamic {}
static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S%>(#this);
static method Extension4|method1<T extends core::Object? = dynamic, S extends core::Object>(lowered final self::Extension4|method1::T% #this) → dynamic {}
static method Extension4|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method1::T% #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T%, S>(#this);
static method Extension4|method2<T extends core::Object? = dynamic, S extends core::String>(lowered final self::Extension4|method2::T% #this) → dynamic {}
static method Extension4|get#method2<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method2::T% #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T%, S>(#this);
static method Extension4|method3<T extends core::Object? = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T% #this) → dynamic {}
static method Extension4|get#method3<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T%, S%>(#this);
static method Extension4|method4<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::Extension4|method4::T% #this) → dynamic {}
static method Extension4|get#method4<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T%, S%>(#this);
static method main() → dynamic {}
@@ -1,8 +1,8 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
extension Extension1<T extends core::Object*> on T* {
extension Extension1<T extends core::Object> on T {
method method1 = self::Extension1|method1;
tearoff method1 = self::Extension1|get#method1;
method method2 = self::Extension1|method2;
@@ -12,7 +12,7 @@ extension Extension1<T extends core::Object*> on T* {
method method4 = self::Extension1|method4;
tearoff method4 = self::Extension1|get#method4;
}
extension Extension2<T extends core::String*> on T* {
extension Extension2<T extends core::String> on T {
method method1 = self::Extension2|method1;
tearoff method1 = self::Extension2|get#method1;
method method2 = self::Extension2|method2;
@@ -22,7 +22,7 @@ extension Extension2<T extends core::String*> on T* {
method method4 = self::Extension2|method4;
tearoff method4 = self::Extension2|get#method4;
}
extension Extension3<T extends dynamic> on T* {
extension Extension3<T extends dynamic> on T% {
method method1 = self::Extension3|method1;
tearoff method1 = self::Extension3|get#method1;
method method2 = self::Extension3|method2;
@@ -32,7 +32,7 @@ extension Extension3<T extends dynamic> on T* {
method method4 = self::Extension3|method4;
tearoff method4 = self::Extension3|get#method4;
}
extension Extension4<T extends core::Object* = dynamic> on T* {
extension Extension4<T extends core::Object? = dynamic> on T% {
method method1 = self::Extension4|method1;
tearoff method1 = self::Extension4|get#method1;
method method2 = self::Extension4|method2;
@@ -42,52 +42,52 @@ extension Extension4<T extends core::Object* = dynamic> on T* {
method method4 = self::Extension4|method4;
tearoff method4 = self::Extension4|get#method4;
}
static method Extension1|method1<T extends core::Object*, S extends core::Object*>(lowered final self::Extension1|method1::T* #this) → dynamic {}
static method Extension1|get#method1<T extends core::Object*>(lowered final self::Extension1|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T*, S*>(#this);
static method Extension1|method2<T extends core::Object*, S extends core::String*>(lowered final self::Extension1|method2::T* #this) → dynamic {}
static method Extension1|get#method2<T extends core::Object*>(lowered final self::Extension1|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T*, S*>(#this);
static method Extension1|method3<T extends core::Object*, S extends dynamic>(lowered final self::Extension1|method3::T* #this) → dynamic {}
static method Extension1|get#method3<T extends core::Object*>(lowered final self::Extension1|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T*, S%>(#this);
static method Extension1|method4<T extends core::Object*, S extends core::Object* = dynamic>(lowered final self::Extension1|method4::T* #this) → dynamic {}
static method Extension1|get#method4<T extends core::Object*>(lowered final self::Extension1|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T*, S*>(#this);
static method Extension2|method1<T extends core::String*, S extends core::Object*>(lowered final self::Extension2|method1::T* #this) → dynamic {}
static method Extension2|get#method1<T extends core::String*>(lowered final self::Extension2|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T*, S*>(#this);
static method Extension2|method2<T extends core::String*, S extends core::String*>(lowered final self::Extension2|method2::T* #this) → dynamic {}
static method Extension2|get#method2<T extends core::String*>(lowered final self::Extension2|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T*, S*>(#this);
static method Extension2|method3<T extends core::String*, S extends dynamic>(lowered final self::Extension2|method3::T* #this) → dynamic {}
static method Extension2|get#method3<T extends core::String*>(lowered final self::Extension2|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T*, S%>(#this);
static method Extension2|method4<T extends core::String*, S extends core::Object* = dynamic>(lowered final self::Extension2|method4::T* #this) → dynamic {}
static method Extension2|get#method4<T extends core::String*>(lowered final self::Extension2|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T*, S*>(#this);
static method Extension3|method1<T extends dynamic, S extends core::Object*>(lowered final self::Extension3|method1::T* #this) → dynamic {}
static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S*>(#this);
static method Extension3|method2<T extends dynamic, S extends core::String*>(lowered final self::Extension3|method2::T* #this) → dynamic {}
static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S*>(#this);
static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T* #this) → dynamic {}
static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T* #this) → <S extends dynamic>() →* dynamic
static method Extension1|method1<T extends core::Object, S extends core::Object>(lowered final self::Extension1|method1::T #this) → dynamic {}
static method Extension1|get#method1<T extends core::Object>(lowered final self::Extension1|get#method1::T #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T, S>(#this);
static method Extension1|method2<T extends core::Object, S extends core::String>(lowered final self::Extension1|method2::T #this) → dynamic {}
static method Extension1|get#method2<T extends core::Object>(lowered final self::Extension1|get#method2::T #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T, S>(#this);
static method Extension1|method3<T extends core::Object, S extends dynamic>(lowered final self::Extension1|method3::T #this) → dynamic {}
static method Extension1|get#method3<T extends core::Object>(lowered final self::Extension1|get#method3::T #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T, S%>(#this);
static method Extension1|method4<T extends core::Object, S extends core::Object? = dynamic>(lowered final self::Extension1|method4::T #this) → dynamic {}
static method Extension1|get#method4<T extends core::Object>(lowered final self::Extension1|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T, S%>(#this);
static method Extension2|method1<T extends core::String, S extends core::Object>(lowered final self::Extension2|method1::T #this) → dynamic {}
static method Extension2|get#method1<T extends core::String>(lowered final self::Extension2|get#method1::T #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T, S>(#this);
static method Extension2|method2<T extends core::String, S extends core::String>(lowered final self::Extension2|method2::T #this) → dynamic {}
static method Extension2|get#method2<T extends core::String>(lowered final self::Extension2|get#method2::T #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T, S>(#this);
static method Extension2|method3<T extends core::String, S extends dynamic>(lowered final self::Extension2|method3::T #this) → dynamic {}
static method Extension2|get#method3<T extends core::String>(lowered final self::Extension2|get#method3::T #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T, S%>(#this);
static method Extension2|method4<T extends core::String, S extends core::Object? = dynamic>(lowered final self::Extension2|method4::T #this) → dynamic {}
static method Extension2|get#method4<T extends core::String>(lowered final self::Extension2|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T, S%>(#this);
static method Extension3|method1<T extends dynamic, S extends core::Object>(lowered final self::Extension3|method1::T% #this) → dynamic {}
static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T% #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S>(#this);
static method Extension3|method2<T extends dynamic, S extends core::String>(lowered final self::Extension3|method2::T% #this) → dynamic {}
static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T% #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S>(#this);
static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T% #this) → dynamic {}
static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension3|method3<self::Extension3|get#method3::T%, S%>(#this);
static method Extension3|method4<T extends dynamic, S extends core::Object* = dynamic>(lowered final self::Extension3|method4::T* #this) → dynamic {}
static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S*>(#this);
static method Extension4|method1<T extends core::Object* = dynamic, S extends core::Object*>(lowered final self::Extension4|method1::T* #this) → dynamic {}
static method Extension4|get#method1<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T*, S*>(#this);
static method Extension4|method2<T extends core::Object* = dynamic, S extends core::String*>(lowered final self::Extension4|method2::T* #this) → dynamic {}
static method Extension4|get#method2<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T*, S*>(#this);
static method Extension4|method3<T extends core::Object* = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T* #this) → dynamic {}
static method Extension4|get#method3<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T*, S%>(#this);
static method Extension4|method4<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::Extension4|method4::T* #this) → dynamic {}
static method Extension4|get#method4<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T*, S*>(#this);
static method Extension3|method4<T extends dynamic, S extends core::Object? = dynamic>(lowered final self::Extension3|method4::T% #this) → dynamic {}
static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S%>(#this);
static method Extension4|method1<T extends core::Object? = dynamic, S extends core::Object>(lowered final self::Extension4|method1::T% #this) → dynamic {}
static method Extension4|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method1::T% #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T%, S>(#this);
static method Extension4|method2<T extends core::Object? = dynamic, S extends core::String>(lowered final self::Extension4|method2::T% #this) → dynamic {}
static method Extension4|get#method2<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method2::T% #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T%, S>(#this);
static method Extension4|method3<T extends core::Object? = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T% #this) → dynamic {}
static method Extension4|get#method3<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T%, S%>(#this);
static method Extension4|method4<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::Extension4|method4::T% #this) → dynamic {}
static method Extension4|get#method4<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T%, S%>(#this);
static method main() → dynamic {}
@@ -1,8 +1,8 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
extension Extension1<T extends core::Object*> on T* {
extension Extension1<T extends core::Object> on T {
method method1 = self::Extension1|method1;
tearoff method1 = self::Extension1|get#method1;
method method2 = self::Extension1|method2;
@@ -12,7 +12,7 @@ extension Extension1<T extends core::Object*> on T* {
method method4 = self::Extension1|method4;
tearoff method4 = self::Extension1|get#method4;
}
extension Extension2<T extends core::String*> on T* {
extension Extension2<T extends core::String> on T {
method method1 = self::Extension2|method1;
tearoff method1 = self::Extension2|get#method1;
method method2 = self::Extension2|method2;
@@ -22,7 +22,7 @@ extension Extension2<T extends core::String*> on T* {
method method4 = self::Extension2|method4;
tearoff method4 = self::Extension2|get#method4;
}
extension Extension3<T extends dynamic> on T* {
extension Extension3<T extends dynamic> on T% {
method method1 = self::Extension3|method1;
tearoff method1 = self::Extension3|get#method1;
method method2 = self::Extension3|method2;
@@ -32,7 +32,7 @@ extension Extension3<T extends dynamic> on T* {
method method4 = self::Extension3|method4;
tearoff method4 = self::Extension3|get#method4;
}
extension Extension4<T extends core::Object* = dynamic> on T* {
extension Extension4<T extends core::Object? = dynamic> on T% {
method method1 = self::Extension4|method1;
tearoff method1 = self::Extension4|get#method1;
method method2 = self::Extension4|method2;
@@ -42,69 +42,69 @@ extension Extension4<T extends core::Object* = dynamic> on T* {
method method4 = self::Extension4|method4;
tearoff method4 = self::Extension4|get#method4;
}
static method Extension1|method1<T extends core::Object*, S extends core::Object*>(lowered final self::Extension1|method1::T* #this) → dynamic
static method Extension1|method1<T extends core::Object, S extends core::Object>(lowered final self::Extension1|method1::T #this) → dynamic
;
static method Extension1|get#method1<T extends core::Object*>(lowered final self::Extension1|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T*, S*>(#this);
static method Extension1|method2<T extends core::Object*, S extends core::String*>(lowered final self::Extension1|method2::T* #this) → dynamic
static method Extension1|get#method1<T extends core::Object>(lowered final self::Extension1|get#method1::T #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T, S>(#this);
static method Extension1|method2<T extends core::Object, S extends core::String>(lowered final self::Extension1|method2::T #this) → dynamic
;
static method Extension1|get#method2<T extends core::Object*>(lowered final self::Extension1|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T*, S*>(#this);
static method Extension1|method3<T extends core::Object*, S extends dynamic>(lowered final self::Extension1|method3::T* #this) → dynamic
static method Extension1|get#method2<T extends core::Object>(lowered final self::Extension1|get#method2::T #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T, S>(#this);
static method Extension1|method3<T extends core::Object, S extends dynamic>(lowered final self::Extension1|method3::T #this) → dynamic
;
static method Extension1|get#method3<T extends core::Object*>(lowered final self::Extension1|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T*, S%>(#this);
static method Extension1|method4<T extends core::Object*, S extends core::Object* = dynamic>(lowered final self::Extension1|method4::T* #this) → dynamic
static method Extension1|get#method3<T extends core::Object>(lowered final self::Extension1|get#method3::T #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T, S%>(#this);
static method Extension1|method4<T extends core::Object, S extends core::Object? = dynamic>(lowered final self::Extension1|method4::T #this) → dynamic
;
static method Extension1|get#method4<T extends core::Object*>(lowered final self::Extension1|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T*, S*>(#this);
static method Extension2|method1<T extends core::String*, S extends core::Object*>(lowered final self::Extension2|method1::T* #this) → dynamic
static method Extension1|get#method4<T extends core::Object>(lowered final self::Extension1|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T, S%>(#this);
static method Extension2|method1<T extends core::String, S extends core::Object>(lowered final self::Extension2|method1::T #this) → dynamic
;
static method Extension2|get#method1<T extends core::String*>(lowered final self::Extension2|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T*, S*>(#this);
static method Extension2|method2<T extends core::String*, S extends core::String*>(lowered final self::Extension2|method2::T* #this) → dynamic
static method Extension2|get#method1<T extends core::String>(lowered final self::Extension2|get#method1::T #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T, S>(#this);
static method Extension2|method2<T extends core::String, S extends core::String>(lowered final self::Extension2|method2::T #this) → dynamic
;
static method Extension2|get#method2<T extends core::String*>(lowered final self::Extension2|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T*, S*>(#this);
static method Extension2|method3<T extends core::String*, S extends dynamic>(lowered final self::Extension2|method3::T* #this) → dynamic
static method Extension2|get#method2<T extends core::String>(lowered final self::Extension2|get#method2::T #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T, S>(#this);
static method Extension2|method3<T extends core::String, S extends dynamic>(lowered final self::Extension2|method3::T #this) → dynamic
;
static method Extension2|get#method3<T extends core::String*>(lowered final self::Extension2|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T*, S%>(#this);
static method Extension2|method4<T extends core::String*, S extends core::Object* = dynamic>(lowered final self::Extension2|method4::T* #this) → dynamic
static method Extension2|get#method3<T extends core::String>(lowered final self::Extension2|get#method3::T #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T, S%>(#this);
static method Extension2|method4<T extends core::String, S extends core::Object? = dynamic>(lowered final self::Extension2|method4::T #this) → dynamic
;
static method Extension2|get#method4<T extends core::String*>(lowered final self::Extension2|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T*, S*>(#this);
static method Extension3|method1<T extends dynamic, S extends core::Object*>(lowered final self::Extension3|method1::T* #this) → dynamic
static method Extension2|get#method4<T extends core::String>(lowered final self::Extension2|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T, S%>(#this);
static method Extension3|method1<T extends dynamic, S extends core::Object>(lowered final self::Extension3|method1::T% #this) → dynamic
;
static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S*>(#this);
static method Extension3|method2<T extends dynamic, S extends core::String*>(lowered final self::Extension3|method2::T* #this) → dynamic
static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T% #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S>(#this);
static method Extension3|method2<T extends dynamic, S extends core::String>(lowered final self::Extension3|method2::T% #this) → dynamic
;
static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S*>(#this);
static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T* #this) → dynamic
static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T% #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S>(#this);
static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T% #this) → dynamic
;
static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T* #this) → <S extends dynamic>() →* dynamic
static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension3|method3<self::Extension3|get#method3::T%, S%>(#this);
static method Extension3|method4<T extends dynamic, S extends core::Object* = dynamic>(lowered final self::Extension3|method4::T* #this) → dynamic
static method Extension3|method4<T extends dynamic, S extends core::Object? = dynamic>(lowered final self::Extension3|method4::T% #this) → dynamic
;
static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S*>(#this);
static method Extension4|method1<T extends core::Object* = dynamic, S extends core::Object*>(lowered final self::Extension4|method1::T* #this) → dynamic
static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S%>(#this);
static method Extension4|method1<T extends core::Object? = dynamic, S extends core::Object>(lowered final self::Extension4|method1::T% #this) → dynamic
;
static method Extension4|get#method1<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T*, S*>(#this);
static method Extension4|method2<T extends core::Object* = dynamic, S extends core::String*>(lowered final self::Extension4|method2::T* #this) → dynamic
static method Extension4|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method1::T% #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T%, S>(#this);
static method Extension4|method2<T extends core::Object? = dynamic, S extends core::String>(lowered final self::Extension4|method2::T% #this) → dynamic
;
static method Extension4|get#method2<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T*, S*>(#this);
static method Extension4|method3<T extends core::Object* = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T* #this) → dynamic
static method Extension4|get#method2<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method2::T% #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T%, S>(#this);
static method Extension4|method3<T extends core::Object? = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T% #this) → dynamic
;
static method Extension4|get#method3<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T*, S%>(#this);
static method Extension4|method4<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::Extension4|method4::T* #this) → dynamic
static method Extension4|get#method3<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T%, S%>(#this);
static method Extension4|method4<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::Extension4|method4::T% #this) → dynamic
;
static method Extension4|get#method4<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T*, S*>(#this);
static method Extension4|get#method4<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T%, S%>(#this);
static method main() → dynamic
;
@@ -1,8 +1,8 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
extension Extension1<T extends core::Object*> on T* {
extension Extension1<T extends core::Object> on T {
method method1 = self::Extension1|method1;
tearoff method1 = self::Extension1|get#method1;
method method2 = self::Extension1|method2;
@@ -12,7 +12,7 @@ extension Extension1<T extends core::Object*> on T* {
method method4 = self::Extension1|method4;
tearoff method4 = self::Extension1|get#method4;
}
extension Extension2<T extends core::String*> on T* {
extension Extension2<T extends core::String> on T {
method method1 = self::Extension2|method1;
tearoff method1 = self::Extension2|get#method1;
method method2 = self::Extension2|method2;
@@ -22,7 +22,7 @@ extension Extension2<T extends core::String*> on T* {
method method4 = self::Extension2|method4;
tearoff method4 = self::Extension2|get#method4;
}
extension Extension3<T extends dynamic> on T* {
extension Extension3<T extends dynamic> on T% {
method method1 = self::Extension3|method1;
tearoff method1 = self::Extension3|get#method1;
method method2 = self::Extension3|method2;
@@ -32,7 +32,7 @@ extension Extension3<T extends dynamic> on T* {
method method4 = self::Extension3|method4;
tearoff method4 = self::Extension3|get#method4;
}
extension Extension4<T extends core::Object* = dynamic> on T* {
extension Extension4<T extends core::Object? = dynamic> on T% {
method method1 = self::Extension4|method1;
tearoff method1 = self::Extension4|get#method1;
method method2 = self::Extension4|method2;
@@ -42,52 +42,52 @@ extension Extension4<T extends core::Object* = dynamic> on T* {
method method4 = self::Extension4|method4;
tearoff method4 = self::Extension4|get#method4;
}
static method Extension1|method1<T extends core::Object*, S extends core::Object*>(lowered final self::Extension1|method1::T* #this) → dynamic {}
static method Extension1|get#method1<T extends core::Object*>(lowered final self::Extension1|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T*, S*>(#this);
static method Extension1|method2<T extends core::Object*, S extends core::String*>(lowered final self::Extension1|method2::T* #this) → dynamic {}
static method Extension1|get#method2<T extends core::Object*>(lowered final self::Extension1|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T*, S*>(#this);
static method Extension1|method3<T extends core::Object*, S extends dynamic>(lowered final self::Extension1|method3::T* #this) → dynamic {}
static method Extension1|get#method3<T extends core::Object*>(lowered final self::Extension1|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T*, S%>(#this);
static method Extension1|method4<T extends core::Object*, S extends core::Object* = dynamic>(lowered final self::Extension1|method4::T* #this) → dynamic {}
static method Extension1|get#method4<T extends core::Object*>(lowered final self::Extension1|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T*, S*>(#this);
static method Extension2|method1<T extends core::String*, S extends core::Object*>(lowered final self::Extension2|method1::T* #this) → dynamic {}
static method Extension2|get#method1<T extends core::String*>(lowered final self::Extension2|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T*, S*>(#this);
static method Extension2|method2<T extends core::String*, S extends core::String*>(lowered final self::Extension2|method2::T* #this) → dynamic {}
static method Extension2|get#method2<T extends core::String*>(lowered final self::Extension2|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T*, S*>(#this);
static method Extension2|method3<T extends core::String*, S extends dynamic>(lowered final self::Extension2|method3::T* #this) → dynamic {}
static method Extension2|get#method3<T extends core::String*>(lowered final self::Extension2|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T*, S%>(#this);
static method Extension2|method4<T extends core::String*, S extends core::Object* = dynamic>(lowered final self::Extension2|method4::T* #this) → dynamic {}
static method Extension2|get#method4<T extends core::String*>(lowered final self::Extension2|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T*, S*>(#this);
static method Extension3|method1<T extends dynamic, S extends core::Object*>(lowered final self::Extension3|method1::T* #this) → dynamic {}
static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S*>(#this);
static method Extension3|method2<T extends dynamic, S extends core::String*>(lowered final self::Extension3|method2::T* #this) → dynamic {}
static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S*>(#this);
static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T* #this) → dynamic {}
static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T* #this) → <S extends dynamic>() →* dynamic
static method Extension1|method1<T extends core::Object, S extends core::Object>(lowered final self::Extension1|method1::T #this) → dynamic {}
static method Extension1|get#method1<T extends core::Object>(lowered final self::Extension1|get#method1::T #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension1|method1<self::Extension1|get#method1::T, S>(#this);
static method Extension1|method2<T extends core::Object, S extends core::String>(lowered final self::Extension1|method2::T #this) → dynamic {}
static method Extension1|get#method2<T extends core::Object>(lowered final self::Extension1|get#method2::T #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension1|method2<self::Extension1|get#method2::T, S>(#this);
static method Extension1|method3<T extends core::Object, S extends dynamic>(lowered final self::Extension1|method3::T #this) → dynamic {}
static method Extension1|get#method3<T extends core::Object>(lowered final self::Extension1|get#method3::T #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension1|method3<self::Extension1|get#method3::T, S%>(#this);
static method Extension1|method4<T extends core::Object, S extends core::Object? = dynamic>(lowered final self::Extension1|method4::T #this) → dynamic {}
static method Extension1|get#method4<T extends core::Object>(lowered final self::Extension1|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension1|method4<self::Extension1|get#method4::T, S%>(#this);
static method Extension2|method1<T extends core::String, S extends core::Object>(lowered final self::Extension2|method1::T #this) → dynamic {}
static method Extension2|get#method1<T extends core::String>(lowered final self::Extension2|get#method1::T #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension2|method1<self::Extension2|get#method1::T, S>(#this);
static method Extension2|method2<T extends core::String, S extends core::String>(lowered final self::Extension2|method2::T #this) → dynamic {}
static method Extension2|get#method2<T extends core::String>(lowered final self::Extension2|get#method2::T #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension2|method2<self::Extension2|get#method2::T, S>(#this);
static method Extension2|method3<T extends core::String, S extends dynamic>(lowered final self::Extension2|method3::T #this) → dynamic {}
static method Extension2|get#method3<T extends core::String>(lowered final self::Extension2|get#method3::T #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension2|method3<self::Extension2|get#method3::T, S%>(#this);
static method Extension2|method4<T extends core::String, S extends core::Object? = dynamic>(lowered final self::Extension2|method4::T #this) → dynamic {}
static method Extension2|get#method4<T extends core::String>(lowered final self::Extension2|get#method4::T #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension2|method4<self::Extension2|get#method4::T, S%>(#this);
static method Extension3|method1<T extends dynamic, S extends core::Object>(lowered final self::Extension3|method1::T% #this) → dynamic {}
static method Extension3|get#method1<T extends dynamic>(lowered final self::Extension3|get#method1::T% #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension3|method1<self::Extension3|get#method1::T%, S>(#this);
static method Extension3|method2<T extends dynamic, S extends core::String>(lowered final self::Extension3|method2::T% #this) → dynamic {}
static method Extension3|get#method2<T extends dynamic>(lowered final self::Extension3|get#method2::T% #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension3|method2<self::Extension3|get#method2::T%, S>(#this);
static method Extension3|method3<T extends dynamic, S extends dynamic>(lowered final self::Extension3|method3::T% #this) → dynamic {}
static method Extension3|get#method3<T extends dynamic>(lowered final self::Extension3|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension3|method3<self::Extension3|get#method3::T%, S%>(#this);
static method Extension3|method4<T extends dynamic, S extends core::Object* = dynamic>(lowered final self::Extension3|method4::T* #this) → dynamic {}
static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S*>(#this);
static method Extension4|method1<T extends core::Object* = dynamic, S extends core::Object*>(lowered final self::Extension4|method1::T* #this) → dynamic {}
static method Extension4|get#method1<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method1::T* #this) → <S extends core::Object*>() →* dynamic
return <S extends core::Object*>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T*, S*>(#this);
static method Extension4|method2<T extends core::Object* = dynamic, S extends core::String*>(lowered final self::Extension4|method2::T* #this) → dynamic {}
static method Extension4|get#method2<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method2::T* #this) → <S extends core::String*>() →* dynamic
return <S extends core::String*>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T*, S*>(#this);
static method Extension4|method3<T extends core::Object* = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T* #this) → dynamic {}
static method Extension4|get#method3<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method3::T* #this) → <S extends dynamic>() →* dynamic
return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T*, S%>(#this);
static method Extension4|method4<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(lowered final self::Extension4|method4::T* #this) → dynamic {}
static method Extension4|get#method4<T extends core::Object* = dynamic>(lowered final self::Extension4|get#method4::T* #this) → <S extends core::Object* = dynamic>() →* dynamic
return <S extends core::Object* = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T*, S*>(#this);
static method Extension3|method4<T extends dynamic, S extends core::Object? = dynamic>(lowered final self::Extension3|method4::T% #this) → dynamic {}
static method Extension3|get#method4<T extends dynamic>(lowered final self::Extension3|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension3|method4<self::Extension3|get#method4::T%, S%>(#this);
static method Extension4|method1<T extends core::Object? = dynamic, S extends core::Object>(lowered final self::Extension4|method1::T% #this) → dynamic {}
static method Extension4|get#method1<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method1::T% #this) → <S extends core::Object>() → dynamic
return <S extends core::Object>() → dynamic => self::Extension4|method1<self::Extension4|get#method1::T%, S>(#this);
static method Extension4|method2<T extends core::Object? = dynamic, S extends core::String>(lowered final self::Extension4|method2::T% #this) → dynamic {}
static method Extension4|get#method2<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method2::T% #this) → <S extends core::String>() → dynamic
return <S extends core::String>() → dynamic => self::Extension4|method2<self::Extension4|get#method2::T%, S>(#this);
static method Extension4|method3<T extends core::Object? = dynamic, S extends dynamic>(lowered final self::Extension4|method3::T% #this) → dynamic {}
static method Extension4|get#method3<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method3::T% #this) → <S extends dynamic>() → dynamic
return <S extends dynamic>() → dynamic => self::Extension4|method3<self::Extension4|get#method3::T%, S%>(#this);
static method Extension4|method4<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(lowered final self::Extension4|method4::T% #this) → dynamic {}
static method Extension4|get#method4<T extends core::Object? = dynamic>(lowered final self::Extension4|get#method4::T% #this) → <S extends core::Object? = dynamic>() → dynamic
return <S extends core::Object? = dynamic>() → dynamic => self::Extension4|method4<self::Extension4|get#method4::T%, S%>(#this);
static method main() → dynamic {}
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
// @dart=2.9
extension mixin on int {}
extension extension on int {}
@@ -1,4 +1,3 @@
// @dart = 2.9
extension mixin on int {}
extension extension on int {}
@@ -1,4 +1,3 @@
// @dart = 2.9
extension as on int {}
extension extension on int {}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,10 +17,10 @@ library;
import self as self;
import "dart:core" as core;
extension mixin on core::int* {
extension mixin on core::int {
}
extension extension on core::int* {
extension extension on core::int {
}
extension as on core::int* {
extension as on core::int {
}
static method main() → void {}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,10 +17,10 @@ library;
import self as self;
import "dart:core" as core;
extension mixin on core::int* {
extension mixin on core::int {
}
extension extension on core::int* {
extension extension on core::int {
}
extension as on core::int* {
extension as on core::int {
}
static method main() → void {}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,11 +17,11 @@ library;
import self as self;
import "dart:core" as core;
extension mixin on core::int* {
extension mixin on core::int {
}
extension extension on core::int* {
extension extension on core::int {
}
extension as on core::int* {
extension as on core::int {
}
static method main() → void
;
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,10 +17,10 @@ library;
import self as self;
import "dart:core" as core;
extension mixin on core::int* {
extension mixin on core::int {
}
extension extension on core::int* {
extension extension on core::int {
}
extension as on core::int* {
extension as on core::int {
}
static method main() → void {}
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
// @dart=2.9
class A {
String get call => "My name is A";
}
@@ -1,4 +1,3 @@
// @dart = 2.9
class A {
String get call => "My name is A";
}
@@ -1,4 +1,3 @@
// @dart = 2.9
A a = new A();
B b = new B();
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -76,84 +76,64 @@ import self as self;
import "dart:core" as core;
class A extends core::Object {
synthetic constructor •() → self::A*
synthetic constructor •() → self::A
: super core::Object::•()
;
get call() → core::String*
get call() → core::String
return "My name is A";
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
synthetic constructor •() → self::B*
synthetic constructor •() → self::B
: super core::Object::•()
;
get call() → () →* core::String*
return () → core::String* => "My name is B";
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
get call() → () → core::String
return () → core::String => "My name is B";
}
extension _extension#0 on core::int* {
extension _extension#0 on core::int {
get call = self::_extension#0|get#call;
}
extension _extension#1 on core::num* {
extension _extension#1 on core::num {
get call = self::_extension#1|get#call;
}
extension _extension#2 on core::String* {
extension _extension#2 on core::String {
get call = self::_extension#2|get#call;
}
static field core::String* topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel1 = 1(10);
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.(10);
static field core::String* topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel2 = 1(\"10\");
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.("10");
static field core::String* topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel3 = 1.0(10);
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.(10);
static field core::String* topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel4 = 1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
static field self::A* a = new self::A::•();
static field self::A a = new self::A::•();
static field invalid-type topLevel5 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:34:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel5 = a(2);
^";
static field self::B* b = new self::B::•();
static field self::B b = new self::B::•();
static field invalid-type topLevel6 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:36:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel6 = a(2, \"3\");
^";
static method _extension#0|get#call(lowered final core::int* #this) → core::String*
static method _extension#0|get#call(lowered final core::int #this) → core::String
return "My name is int";
static method _extension#1|get#call(lowered final core::num* #this) → core::String*
static method _extension#1|get#call(lowered final core::num #this) → core::String
return "My name is num";
static method _extension#2|get#call(lowered final core::String* #this) → () →* core::String*
return () → core::String* => "My name is String";
static method _extension#2|get#call(lowered final core::String #this) → () → core::String
return () → core::String => "My name is String";
static method main() → dynamic {
self::_extension#2|get#call("")(){() →* core::String*};
self::_extension#2|get#call("")(){() → core::String};
}
static method errors() → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:39:4: Error: Too many positional arguments: 0 allowed, but 1 found.
@@ -172,7 +152,7 @@ Try removing the extra positional arguments.
Try removing the extra positional arguments.
1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
self::A* a = new self::A::•();
self::A a = new self::A::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:44:4: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
@@ -183,7 +163,7 @@ Try changing 'call' to a method or explicitly invoke 'call'.
Try changing 'call' to a method or explicitly invoke 'call'.
a(2, \"3\");
^";
self::B* b = new self::B::•();
self::B b = new self::B::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:47:4: Error: Cannot invoke an instance of 'B' because it declares 'call' to be something other than a method.
- 'B' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -76,84 +76,64 @@ import self as self;
import "dart:core" as core;
class A extends core::Object {
synthetic constructor •() → self::A*
synthetic constructor •() → self::A
: super core::Object::•()
;
get call() → core::String*
get call() → core::String
return "My name is A";
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
synthetic constructor •() → self::B*
synthetic constructor •() → self::B
: super core::Object::•()
;
get call() → () →* core::String*
return () → core::String* => "My name is B";
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
get call() → () → core::String
return () → core::String => "My name is B";
}
extension _extension#0 on core::int* {
extension _extension#0 on core::int {
get call = self::_extension#0|get#call;
}
extension _extension#1 on core::num* {
extension _extension#1 on core::num {
get call = self::_extension#1|get#call;
}
extension _extension#2 on core::String* {
extension _extension#2 on core::String {
get call = self::_extension#2|get#call;
}
static field core::String* topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel1 = 1(10);
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.(10);
static field core::String* topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel2 = 1(\"10\");
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.("10");
static field core::String* topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel3 = 1.0(10);
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.(10);
static field core::String* topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel4 = 1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
static field self::A* a = new self::A::•();
static field self::A a = new self::A::•();
static field invalid-type topLevel5 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:34:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel5 = a(2);
^";
static field self::B* b = new self::B::•();
static field self::B b = new self::B::•();
static field invalid-type topLevel6 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:36:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel6 = a(2, \"3\");
^";
static method _extension#0|get#call(lowered final core::int* #this) → core::String*
static method _extension#0|get#call(lowered final core::int #this) → core::String
return "My name is int";
static method _extension#1|get#call(lowered final core::num* #this) → core::String*
static method _extension#1|get#call(lowered final core::num #this) → core::String
return "My name is num";
static method _extension#2|get#call(lowered final core::String* #this) → () →* core::String*
return () → core::String* => "My name is String";
static method _extension#2|get#call(lowered final core::String #this) → () → core::String
return () → core::String => "My name is String";
static method main() → dynamic {
self::_extension#2|get#call("")(){() →* core::String*};
self::_extension#2|get#call("")(){() → core::String};
}
static method errors() → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:39:4: Error: Too many positional arguments: 0 allowed, but 1 found.
@@ -172,7 +152,7 @@ Try removing the extra positional arguments.
Try removing the extra positional arguments.
1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
self::A* a = new self::A::•();
self::A a = new self::A::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:44:4: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
@@ -183,7 +163,7 @@ Try changing 'call' to a method or explicitly invoke 'call'.
Try changing 'call' to a method or explicitly invoke 'call'.
a(2, \"3\");
^";
self::B* b = new self::B::•();
self::B b = new self::B::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:47:4: Error: Cannot invoke an instance of 'B' because it declares 'call' to be something other than a method.
- 'B' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
@@ -1,61 +1,41 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class A extends core::Object {
synthetic constructor •() → self::A*
synthetic constructor •() → self::A
;
get call() → core::String*
get call() → core::String
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
synthetic constructor •() → self::B*
synthetic constructor •() → self::B
;
get call() → () →* core::String*
get call() → () → core::String
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension _extension#0 on core::int* {
extension _extension#0 on core::int {
get call = self::_extension#0|get#call;
}
extension _extension#1 on core::num* {
extension _extension#1 on core::num {
get call = self::_extension#1|get#call;
}
extension _extension#2 on core::String* {
extension _extension#2 on core::String {
get call = self::_extension#2|get#call;
}
static field core::String* topLevel1;
static field core::String* topLevel2;
static field core::String* topLevel3;
static field core::String* topLevel4;
static field self::A* a;
static field core::String topLevel1;
static field core::String topLevel2;
static field core::String topLevel3;
static field core::String topLevel4;
static field self::A a;
static field invalid-type topLevel5;
static field self::B* b;
static field self::B b;
static field invalid-type topLevel6;
static method _extension#0|get#call(lowered final core::int* #this) → core::String*
static method _extension#0|get#call(lowered final core::int #this) → core::String
;
static method _extension#1|get#call(lowered final core::num* #this) → core::String*
static method _extension#1|get#call(lowered final core::num #this) → core::String
;
static method _extension#2|get#call(lowered final core::String* #this) → () →* core::String*
static method _extension#2|get#call(lowered final core::String #this) → () → core::String
;
static method main() → dynamic
;
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -76,84 +76,64 @@ import self as self;
import "dart:core" as core;
class A extends core::Object {
synthetic constructor •() → self::A*
synthetic constructor •() → self::A
: super core::Object::•()
;
get call() → core::String*
get call() → core::String
return "My name is A";
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends core::Object {
synthetic constructor •() → self::B*
synthetic constructor •() → self::B
: super core::Object::•()
;
get call() → () →* core::String*
return () → core::String* => "My name is B";
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
get call() → () → core::String
return () → core::String => "My name is B";
}
extension _extension#0 on core::int* {
extension _extension#0 on core::int {
get call = self::_extension#0|get#call;
}
extension _extension#1 on core::num* {
extension _extension#1 on core::num {
get call = self::_extension#1|get#call;
}
extension _extension#2 on core::String* {
extension _extension#2 on core::String {
get call = self::_extension#2|get#call;
}
static field core::String* topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel1 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:29:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel1 = 1(10);
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.(10);
static field core::String* topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel2 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:30:18: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel2 = 1(\"10\");
^" in self::_extension#2|get#call(self::_extension#0|get#call(1)){<inapplicable>}.("10");
static field core::String* topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel3 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:31:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel3 = 1.0(10);
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.(10);
static field core::String* topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
static field core::String topLevel4 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:32:20: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
var topLevel4 = 1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
static field self::A* a = new self::A::•();
static field self::A a = new self::A::•();
static field invalid-type topLevel5 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:34:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel5 = a(2);
^";
static field self::B* b = new self::B::•();
static field self::B b = new self::B::•();
static field invalid-type topLevel6 = invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:36:18: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
var topLevel6 = a(2, \"3\");
^";
static method _extension#0|get#call(lowered final core::int* #this) → core::String*
static method _extension#0|get#call(lowered final core::int #this) → core::String
return "My name is int";
static method _extension#1|get#call(lowered final core::num* #this) → core::String*
static method _extension#1|get#call(lowered final core::num #this) → core::String
return "My name is num";
static method _extension#2|get#call(lowered final core::String* #this) → () →* core::String*
return () → core::String* => "My name is String";
static method _extension#2|get#call(lowered final core::String #this) → () → core::String
return () → core::String => "My name is String";
static method main() → dynamic {
self::_extension#2|get#call("")(){() →* core::String*};
self::_extension#2|get#call("")(){() → core::String};
}
static method errors() → dynamic {
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:39:4: Error: Too many positional arguments: 0 allowed, but 1 found.
@@ -172,7 +152,7 @@ Try removing the extra positional arguments.
Try removing the extra positional arguments.
1.0(\"10\");
^" in self::_extension#2|get#call(self::_extension#1|get#call(1.0)){<inapplicable>}.("10");
self::A* a = new self::A::•();
self::A a = new self::A::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:44:4: Error: Cannot invoke an instance of 'A' because it declares 'call' to be something other than a method.
- 'A' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
@@ -183,7 +163,7 @@ Try changing 'call' to a method or explicitly invoke 'call'.
Try changing 'call' to a method or explicitly invoke 'call'.
a(2, \"3\");
^";
self::B* b = new self::B::•();
self::B b = new self::B::•();
invalid-expression "pkg/front_end/testcases/extensions/call_methods.dart:47:4: Error: Cannot invoke an instance of 'B' because it declares 'call' to be something other than a method.
- 'B' is from 'pkg/front_end/testcases/extensions/call_methods.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
// @dart=2.9
part 'check_bounds_lib.dart';
class A {}
@@ -17,25 +17,24 @@ extension Extension<T extends B> on Class<T> {
main() {}
test() {
A a;
test(A a) {
Class<A> classA = new Class<A>();
Class<B> classB = new Class<B>();
classA.method(); // Expect method not found.
Extension(classA).method(); // Expect bounds mismatch.
Extension<A>(classA).method(); // Expect bounds mismatch.
Extension<B>(classA).method();
Extension<B>(classB).method();
Extension(classA).genericMethod(a); // Expect bounds mismatch.
Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod<A>(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
Extension<B>(classA).genericMethod<B>(a);
Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
Extension<B>(classB).genericMethod<B>(a);
Class<B> classB = new Class<B>();
classB.method();
Extension(classB).method();
Extension<A>(classB).method(); // Expect bounds mismatch.
@@ -57,6 +56,8 @@ test() {
final A a = new A();
final Class<A> classA = new Class<A>();
final Class<B> classB = new Class<B>();
final field1 = classA.method(); // Expect method not found.
final field2 = Extension(classA).method(); // Expect bounds mismatch.
final field3 = Extension<A>(classA).method(); // Expect bounds mismatch.
@@ -70,12 +71,11 @@ final field9 =
final field10 =
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
final field11 =
Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
final field12 =
Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
final field13 = Extension<B>(classA).genericMethod<B>(a);
Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
final field13 = Extension<B>(classB).genericMethod<B>(a);
final Class<B> classB = new Class<B>();
final field14 = classB.method();
final field15 = Extension(classB).method();
final field16 = Extension<A>(classB).method(); // Expect bounds mismatch.
@@ -1,4 +1,3 @@
// @dart = 2.9
part 'check_bounds_lib.dart';
class A {}
@@ -13,9 +12,10 @@ extension Extension<T extends B> on Class<T> {
}
main() {}
test() {}
test(A a) {}
final A a = new A();
final Class<A> classA = new Class<A>();
final Class<B> classB = new Class<B>();
final field1 = classA.method();
final field2 = Extension(classA).method();
final field3 = Extension<A>(classA).method();
@@ -26,10 +26,9 @@ final field7 = Extension(classA).genericMethod<B>(a);
final field8 = Extension<A>(classA).genericMethod(a);
final field9 = Extension<A>(classA).genericMethod<A>(a);
final field10 = Extension<A>(classA).genericMethod<B>(a);
final field11 = Extension<B>(classA).genericMethod(a);
final field12 = Extension<B>(classA).genericMethod<A>(a);
final field13 = Extension<B>(classA).genericMethod<B>(a);
final Class<B> classB = new Class<B>();
final field11 = Extension<B>(classB).genericMethod(a);
final field12 = Extension<B>(classB).genericMethod<A>(a);
final field13 = Extension<B>(classB).genericMethod<B>(a);
final field14 = classB.method();
final field15 = Extension(classB).method();
final field16 = Extension<A>(classB).method();
@@ -1,4 +1,3 @@
// @dart = 2.9
part 'check_bounds_lib.dart';
class A {}
@@ -17,9 +16,9 @@ final Class<A> classA = new Class<A>();
final Class<B> classB = new Class<B>();
final field1 = classA.method();
final field10 = Extension<A>(classA).genericMethod<B>(a);
final field11 = Extension<B>(classA).genericMethod(a);
final field12 = Extension<B>(classA).genericMethod<A>(a);
final field13 = Extension<B>(classA).genericMethod<B>(a);
final field11 = Extension<B>(classB).genericMethod(a);
final field12 = Extension<B>(classB).genericMethod<A>(a);
final field13 = Extension<B>(classB).genericMethod<B>(a);
final field14 = classB.method();
final field15 = Extension(classB).method();
final field16 = Extension<A>(classB).method();
@@ -45,4 +44,4 @@ final field7 = Extension(classA).genericMethod<B>(a);
final field8 = Extension<A>(classA).genericMethod(a);
final field9 = Extension<A>(classA).genericMethod<A>(a);
main() {}
test() {}
test(A a) {}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -69,6 +69,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:30:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -119,6 +125,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:33:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -133,7 +145,7 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -143,13 +155,19 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:41:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:40:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -159,7 +177,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:43:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -169,7 +187,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:45:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -179,7 +197,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// classB.genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:46:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -189,7 +213,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:48:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -199,7 +223,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -209,7 +239,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -219,7 +249,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -229,7 +259,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -239,7 +269,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:52:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -249,7 +285,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:52:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -259,7 +295,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:54:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -269,14 +305,20 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
// pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// final field1 = classA.method(); // Expect method not found.
// ^^^^^^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:61:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -286,7 +328,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds.dart:63:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -296,41 +338,28 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
// final field4 = Extension<B>(classA).method();
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -340,13 +369,39 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:66:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -356,7 +411,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -366,7 +421,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -376,7 +431,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -386,7 +441,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:71:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:72:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -396,26 +457,32 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:73:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:74:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:75:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:76:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field13 = Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:81:17: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -446,6 +513,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field20 = classB.genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:87:35: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -466,6 +539,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field23 = Extension(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:92:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -506,6 +585,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:96:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -536,6 +621,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field29 = Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -603,6 +694,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -653,6 +750,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -667,7 +770,7 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -677,13 +780,19 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:28:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:27:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -693,7 +802,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:30:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -703,7 +812,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -713,7 +822,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// classB.genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:33:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -723,7 +838,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -733,7 +848,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -743,7 +864,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -753,7 +874,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -763,7 +884,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -773,7 +894,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -783,7 +910,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -793,7 +920,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -803,170 +930,243 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
import self as self;
import "dart:core" as core;
part check_bounds_lib.dart;
class A extends core::Object {
synthetic constructor •() → self::A*
synthetic constructor •() → self::A
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends self::A {
synthetic constructor •() → self::B*
synthetic constructor •() → self::B
: super self::A::•()
;
}
class Class<T extends self::A*> extends core::Object {
synthetic constructor •() → self::Class<self::Class::T*>*
class Class<T extends self::A> extends core::Object {
synthetic constructor •() → self::Class<self::Class::T>
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension<T extends self::B*> on self::Class<T*>* {
extension Extension<T extends self::B> on self::Class<T> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
method genericMethod = self::Extension|genericMethod;
tearoff genericMethod = self::Extension|get#genericMethod;
}
static final field self::A* a = new self::A::•();
static final field self::Class<self::A*>* classA = new self::Class::•<self::A*>();
static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
static final field self::A a = new self::A::•();
static final field self::Class<self::A> classA = new self::Class::•<self::A>();
static final field self::Class<self::B> classB = new self::Class::•<self::B>();
static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
final field1 = classA.method(); // Expect method not found.
^^^^^^" in self::classA{<unresolved>}.method();
static final field dynamic field2 = self::Extension|method<self::A*>(self::classA);
static final field dynamic field3 = self::Extension|method<self::A*>(self::classA);
static final field dynamic field4 = self::Extension|method<self::B*>(self::classA as{TypeError} self::Class<self::B*>*);
static final field dynamic field5 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field6 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field7 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
static final field dynamic field8 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field9 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field10 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
static final field dynamic field11 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
static final field dynamic field12 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
static final field dynamic field13 = self::Extension|genericMethod<self::B*, self::B*>(self::classA as{TypeError} self::Class<self::B*>*, self::a as{TypeError} self::B*);
static final field self::Class<self::B*>* classB = new self::Class::•<self::B*>();
static final field dynamic field14 = self::Extension|method<self::B*>(self::classB);
static final field dynamic field15 = self::Extension|method<self::B*>(self::classB);
static final field dynamic field16 = self::Extension|method<self::A*>(self::classB);
static final field dynamic field17 = self::Extension|method<self::B*>(self::classB);
static final field dynamic field18 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field19 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field20 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static final field dynamic field21 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field22 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field23 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static final field dynamic field24 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
static final field dynamic field25 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
static final field dynamic field26 = self::Extension|genericMethod<self::A*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static final field dynamic field27 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field28 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field29 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static method Extension|method<T extends self::B*>(lowered final self::Class<self::Extension|method::T*>* #this) → dynamic {}
static method Extension|get#method<T extends self::B*>(lowered final self::Class<self::Extension|get#method::T*>* #this) → () →* dynamic
return () → dynamic => self::Extension|method<self::Extension|get#method::T*>(#this);
static method Extension|genericMethod<T extends self::B*, S extends self::B*>(lowered final self::Class<self::Extension|genericMethod::T*>* #this, self::Extension|genericMethod::S* s) → dynamic {}
static method Extension|get#genericMethod<T extends self::B*>(lowered final self::Class<self::Extension|get#genericMethod::T*>* #this) → <S extends self::B*>(S*) →* dynamic
return <S extends self::B*>(S* s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T*, S*>(#this, s);
static final field dynamic field2 = self::Extension|method<self::A>(self::classA);
static final field dynamic field3 = self::Extension|method<self::A>(self::classA);
static final field dynamic field4 = self::Extension|method<self::B>(invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field4 = Extension<B>(classA).method();
^" in self::classA as{TypeError,ForNonNullableByDefault} self::Class<self::B>);
static final field dynamic field5 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field6 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field7 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field8 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field9 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field10 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field11 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field12 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field13 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field13 = Extension<B>(classB).genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field14 = self::Extension|method<self::B>(self::classB);
static final field dynamic field15 = self::Extension|method<self::B>(self::classB);
static final field dynamic field16 = self::Extension|method<self::A>(self::classB);
static final field dynamic field17 = self::Extension|method<self::B>(self::classB);
static final field dynamic field18 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field19 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field20 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field20 = classB.genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field21 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field22 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field23 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field23 = Extension(classB).genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field24 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
static final field dynamic field25 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
static final field dynamic field26 = self::Extension|genericMethod<self::A, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field27 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field28 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field29 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field29 = Extension<B>(classB).genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static method Extension|method<T extends self::B>(lowered final self::Class<self::Extension|method::T> #this) → dynamic {}
static method Extension|get#method<T extends self::B>(lowered final self::Class<self::Extension|get#method::T> #this) → () → dynamic
return () → dynamic => self::Extension|method<self::Extension|get#method::T>(#this);
static method Extension|genericMethod<T extends self::B, S extends self::B>(lowered final self::Class<self::Extension|genericMethod::T> #this, self::Extension|genericMethod::S s) → dynamic {}
static method Extension|get#genericMethod<T extends self::B>(lowered final self::Class<self::Extension|get#genericMethod::T> #this) → <S extends self::B>(S) → dynamic
return <S extends self::B>(S s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T, S>(#this, s);
static method main() → dynamic {}
static method test() → dynamic {
self::A* a;
self::Class<self::A*>* classA = new self::Class::•<self::A*>();
static method test(self::A a) → dynamic {
self::Class<self::A> classA = new self::Class::•<self::A>();
self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:24:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method(); // Expect method not found.
^^^^^^" in classA{<unresolved>}.method();
self::Extension|method<self::A*>(classA);
self::Extension|method<self::A*>(classA);
self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
self::Class<self::B*>* classB = new self::Class::•<self::B*>();
self::Extension|method<self::B*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|method<self::A*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|method<self::A>(classA);
self::Extension|method<self::A>(classA);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|method<self::B>(classB);
self::Extension|method<self::B>(classB);
self::Extension|method<self::A>(classB);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
classB.genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart() → dynamic {
self::A* a;
self::Class<self::A*>* classA = new self::Class::•<self::A*>();
static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart(self::A a) → dynamic {
self::Class<self::A> classA = new self::Class::•<self::A>();
self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method();
^^^^^^" in classA{<unresolved>}.method();
self::Extension|method<self::A*>(classA);
self::Extension|method<self::A*>(classA);
self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
self::Class<self::B*>* classB = new self::Class::•<self::B*>();
self::Extension|method<self::B*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|method<self::A*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|method<self::A>(classA);
self::Extension|method<self::A>(classA);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|method<self::B>(classB);
self::Extension|method<self::B>(classB);
self::Extension|method<self::A>(classB);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
classB.genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -69,6 +69,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:30:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -119,6 +125,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:33:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -133,7 +145,7 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -143,13 +155,19 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:41:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:40:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -159,7 +177,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:43:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -169,7 +187,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:45:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -179,7 +197,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// classB.genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:46:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -189,7 +213,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:48:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -199,7 +223,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -209,7 +239,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -219,7 +249,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -229,7 +259,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -239,7 +269,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:52:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -249,7 +285,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:52:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -259,7 +295,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:54:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -269,14 +305,20 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
// pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// final field1 = classA.method(); // Expect method not found.
// ^^^^^^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:61:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -286,7 +328,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds.dart:63:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -296,41 +338,28 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
// final field4 = Extension<B>(classA).method();
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -340,13 +369,39 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:66:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -356,7 +411,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -366,7 +421,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -376,7 +431,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -386,7 +441,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:71:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:72:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -396,26 +457,32 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:73:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:74:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:75:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:76:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field13 = Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:81:17: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -446,6 +513,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field20 = classB.genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:87:35: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -466,6 +539,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field23 = Extension(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:92:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -506,6 +585,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:96:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -536,6 +621,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field29 = Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -603,6 +694,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -653,6 +750,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -667,7 +770,7 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -677,13 +780,19 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:28:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:27:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -693,7 +802,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:30:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -703,7 +812,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -713,7 +822,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// classB.genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:33:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -723,7 +838,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -733,7 +848,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -743,7 +864,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -753,7 +874,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -763,7 +884,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -773,7 +894,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -783,7 +910,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -793,7 +920,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -803,170 +930,243 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
import self as self;
import "dart:core" as core;
part check_bounds_lib.dart;
class A extends core::Object {
synthetic constructor •() → self::A*
synthetic constructor •() → self::A
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends self::A {
synthetic constructor •() → self::B*
synthetic constructor •() → self::B
: super self::A::•()
;
}
class Class<T extends self::A*> extends core::Object {
synthetic constructor •() → self::Class<self::Class::T*>*
class Class<T extends self::A> extends core::Object {
synthetic constructor •() → self::Class<self::Class::T>
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension<T extends self::B*> on self::Class<T*>* {
extension Extension<T extends self::B> on self::Class<T> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
method genericMethod = self::Extension|genericMethod;
tearoff genericMethod = self::Extension|get#genericMethod;
}
static final field self::A* a = new self::A::•();
static final field self::Class<self::A*>* classA = new self::Class::•<self::A*>();
static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
static final field self::A a = new self::A::•();
static final field self::Class<self::A> classA = new self::Class::•<self::A>();
static final field self::Class<self::B> classB = new self::Class::•<self::B>();
static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
final field1 = classA.method(); // Expect method not found.
^^^^^^" in self::classA{<unresolved>}.method();
static final field dynamic field2 = self::Extension|method<self::A*>(self::classA);
static final field dynamic field3 = self::Extension|method<self::A*>(self::classA);
static final field dynamic field4 = self::Extension|method<self::B*>(self::classA as{TypeError} self::Class<self::B*>*);
static final field dynamic field5 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field6 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field7 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
static final field dynamic field8 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field9 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field10 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
static final field dynamic field11 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
static final field dynamic field12 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
static final field dynamic field13 = self::Extension|genericMethod<self::B*, self::B*>(self::classA as{TypeError} self::Class<self::B*>*, self::a as{TypeError} self::B*);
static final field self::Class<self::B*>* classB = new self::Class::•<self::B*>();
static final field dynamic field14 = self::Extension|method<self::B*>(self::classB);
static final field dynamic field15 = self::Extension|method<self::B*>(self::classB);
static final field dynamic field16 = self::Extension|method<self::A*>(self::classB);
static final field dynamic field17 = self::Extension|method<self::B*>(self::classB);
static final field dynamic field18 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field19 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field20 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static final field dynamic field21 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field22 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field23 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static final field dynamic field24 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
static final field dynamic field25 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
static final field dynamic field26 = self::Extension|genericMethod<self::A*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static final field dynamic field27 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field28 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field29 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static method Extension|method<T extends self::B*>(lowered final self::Class<self::Extension|method::T*>* #this) → dynamic {}
static method Extension|get#method<T extends self::B*>(lowered final self::Class<self::Extension|get#method::T*>* #this) → () →* dynamic
return () → dynamic => self::Extension|method<self::Extension|get#method::T*>(#this);
static method Extension|genericMethod<T extends self::B*, S extends self::B*>(lowered final self::Class<self::Extension|genericMethod::T*>* #this, self::Extension|genericMethod::S* s) → dynamic {}
static method Extension|get#genericMethod<T extends self::B*>(lowered final self::Class<self::Extension|get#genericMethod::T*>* #this) → <S extends self::B*>(S*) →* dynamic
return <S extends self::B*>(S* s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T*, S*>(#this, s);
static final field dynamic field2 = self::Extension|method<self::A>(self::classA);
static final field dynamic field3 = self::Extension|method<self::A>(self::classA);
static final field dynamic field4 = self::Extension|method<self::B>(invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field4 = Extension<B>(classA).method();
^" in self::classA as{TypeError,ForNonNullableByDefault} self::Class<self::B>);
static final field dynamic field5 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field6 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field7 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field8 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field9 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field10 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field11 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field12 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field13 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field13 = Extension<B>(classB).genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field14 = self::Extension|method<self::B>(self::classB);
static final field dynamic field15 = self::Extension|method<self::B>(self::classB);
static final field dynamic field16 = self::Extension|method<self::A>(self::classB);
static final field dynamic field17 = self::Extension|method<self::B>(self::classB);
static final field dynamic field18 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field19 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field20 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field20 = classB.genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field21 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field22 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field23 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field23 = Extension(classB).genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field24 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
static final field dynamic field25 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
static final field dynamic field26 = self::Extension|genericMethod<self::A, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field27 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field28 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field29 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field29 = Extension<B>(classB).genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static method Extension|method<T extends self::B>(lowered final self::Class<self::Extension|method::T> #this) → dynamic {}
static method Extension|get#method<T extends self::B>(lowered final self::Class<self::Extension|get#method::T> #this) → () → dynamic
return () → dynamic => self::Extension|method<self::Extension|get#method::T>(#this);
static method Extension|genericMethod<T extends self::B, S extends self::B>(lowered final self::Class<self::Extension|genericMethod::T> #this, self::Extension|genericMethod::S s) → dynamic {}
static method Extension|get#genericMethod<T extends self::B>(lowered final self::Class<self::Extension|get#genericMethod::T> #this) → <S extends self::B>(S) → dynamic
return <S extends self::B>(S s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T, S>(#this, s);
static method main() → dynamic {}
static method test() → dynamic {
self::A* a;
self::Class<self::A*>* classA = new self::Class::•<self::A*>();
static method test(self::A a) → dynamic {
self::Class<self::A> classA = new self::Class::•<self::A>();
self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:24:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method(); // Expect method not found.
^^^^^^" in classA{<unresolved>}.method();
self::Extension|method<self::A*>(classA);
self::Extension|method<self::A*>(classA);
self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
self::Class<self::B*>* classB = new self::Class::•<self::B*>();
self::Extension|method<self::B*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|method<self::A*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|method<self::A>(classA);
self::Extension|method<self::A>(classA);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|method<self::B>(classB);
self::Extension|method<self::B>(classB);
self::Extension|method<self::A>(classB);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
classB.genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart() → dynamic {
self::A* a;
self::Class<self::A*>* classA = new self::Class::•<self::A*>();
static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart(self::A a) → dynamic {
self::Class<self::A> classA = new self::Class::•<self::A>();
self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method();
^^^^^^" in classA{<unresolved>}.method();
self::Extension|method<self::A*>(classA);
self::Extension|method<self::A*>(classA);
self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
self::Class<self::B*>* classB = new self::Class::•<self::B*>();
self::Extension|method<self::B*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|method<self::A*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|method<self::A>(classA);
self::Extension|method<self::A>(classA);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|method<self::B>(classB);
self::Extension|method<self::B>(classB);
self::Extension|method<self::A>(classB);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
classB.genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
@@ -1,48 +1,29 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
part check_bounds_lib.dart;
class A extends core::Object {
synthetic constructor •() → self::A*
synthetic constructor •() → self::A
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends self::A {
synthetic constructor •() → self::B*
synthetic constructor •() → self::B
;
}
class Class<T extends self::A*> extends core::Object {
synthetic constructor •() → self::Class<self::Class::T*>*
class Class<T extends self::A> extends core::Object {
synthetic constructor •() → self::Class<self::Class::T>
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension<T extends self::B*> on self::Class<T*>* {
extension Extension<T extends self::B> on self::Class<T> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
method genericMethod = self::Extension|genericMethod;
tearoff genericMethod = self::Extension|get#genericMethod;
}
static final field self::A* a;
static final field self::Class<self::A*>* classA;
static final field self::A a;
static final field self::Class<self::A> classA;
static final field self::Class<self::B> classB;
static final field dynamic field1;
static final field dynamic field2;
static final field dynamic field3;
@@ -56,7 +37,6 @@ static final field dynamic field10;
static final field dynamic field11;
static final field dynamic field12;
static final field dynamic field13;
static final field self::Class<self::B*>* classB;
static final field dynamic field14;
static final field dynamic field15;
static final field dynamic field16;
@@ -73,17 +53,17 @@ static final field dynamic field26;
static final field dynamic field27;
static final field dynamic field28;
static final field dynamic field29;
static method Extension|method<T extends self::B*>(lowered final self::Class<self::Extension|method::T*>* #this) → dynamic
static method Extension|method<T extends self::B>(lowered final self::Class<self::Extension|method::T> #this) → dynamic
;
static method Extension|get#method<T extends self::B*>(lowered final self::Class<self::Extension|get#method::T*>* #this) → () →* dynamic
return () → dynamic => self::Extension|method<self::Extension|get#method::T*>(#this);
static method Extension|genericMethod<T extends self::B*, S extends self::B*>(lowered final self::Class<self::Extension|genericMethod::T*>* #this, self::Extension|genericMethod::S* s) → dynamic
static method Extension|get#method<T extends self::B>(lowered final self::Class<self::Extension|get#method::T> #this) → () → dynamic
return () → dynamic => self::Extension|method<self::Extension|get#method::T>(#this);
static method Extension|genericMethod<T extends self::B, S extends self::B>(lowered final self::Class<self::Extension|genericMethod::T> #this, self::Extension|genericMethod::S s) → dynamic
;
static method Extension|get#genericMethod<T extends self::B*>(lowered final self::Class<self::Extension|get#genericMethod::T*>* #this) → <S extends self::B*>(S*) →* dynamic
return <S extends self::B*>(S* s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T*, S*>(#this, s);
static method Extension|get#genericMethod<T extends self::B>(lowered final self::Class<self::Extension|get#genericMethod::T> #this) → <S extends self::B>(S) → dynamic
return <S extends self::B>(S s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T, S>(#this, s);
static method main() → dynamic
;
static method test() → dynamic
static method test(self::A a) → dynamic
;
static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart() → dynamic
static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart(self::A a) → dynamic
;
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -69,6 +69,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:30:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -119,6 +125,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:33:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -133,7 +145,7 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -143,13 +155,19 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:41:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:40:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -159,7 +177,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:43:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -169,7 +187,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:45:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:44:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -179,7 +197,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// classB.genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:46:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -189,7 +213,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:48:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:47:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -199,7 +223,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -209,7 +239,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:49:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -219,7 +249,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -229,7 +259,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:50:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -239,7 +269,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:52:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:51:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -249,7 +285,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:52:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -259,7 +295,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:54:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:53:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -269,14 +305,20 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
// pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try correcting the name to the name of an existing method, or defining a method named 'method'.
// final field1 = classA.method(); // Expect method not found.
// ^^^^^^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:61:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -286,7 +328,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:62:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds.dart:63:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -296,41 +338,28 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:64:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
// final field4 = Extension<B>(classA).method();
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:65:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field5 = Extension(classA).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -340,13 +369,39 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:66:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// final field6 = Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:13:21: Context: This is the type variable whose bound isn't conformed to.
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -356,7 +411,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:67:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:68:16: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -366,7 +421,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -376,7 +431,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:69:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:70:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -386,7 +441,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:71:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:72:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -396,26 +457,32 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:73:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:74:26: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:75:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds.dart:76:26: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field13 = Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:81:17: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -446,6 +513,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field20 = classB.genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:87:35: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -466,6 +539,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field23 = Extension(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:92:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -506,6 +585,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:96:5: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -536,6 +621,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// final field29 = Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
// - 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -603,6 +694,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -653,6 +750,12 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
@@ -667,7 +770,7 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
// Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
@@ -677,13 +780,19 @@ library;
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
// Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
// Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
// ^
// pkg/front_end/testcases/extensions/check_bounds.dart:15:17: Context: This is the type variable whose bound isn't conformed to.
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:28:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:27:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|method'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -693,7 +802,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:30:10: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -703,7 +812,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:31:10: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -713,7 +822,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// classB.genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:33:21: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -723,7 +838,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:34:21: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -733,7 +848,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension(classB).genericMethod<B>(a);
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -743,7 +864,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:36:3: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -753,7 +874,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -763,7 +884,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:37:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -773,7 +894,13 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:3: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'T' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -783,7 +910,7 @@ library;
// extension Extension<T extends B> on Class<T> {
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:39:24: Error: Inferred type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try specifying type arguments explicitly so that they conform to the bounds.
@@ -793,7 +920,7 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:40:24: Error: Type argument 'A' doesn't conform to the bound 'B' of the type variable 'S' on 'Extension|genericMethod'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Try changing type arguments so that they conform to the bounds.
@@ -803,170 +930,243 @@ library;
// genericMethod<S extends B>(S s) {}
// ^
//
// pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
// - 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// - 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
// Extension<B>(classB).genericMethod<B>(a);
// ^
//
import self as self;
import "dart:core" as core;
part check_bounds_lib.dart;
class A extends core::Object {
synthetic constructor •() → self::A*
synthetic constructor •() → self::A
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class B extends self::A {
synthetic constructor •() → self::B*
synthetic constructor •() → self::B
: super self::A::•()
;
}
class Class<T extends self::A*> extends core::Object {
synthetic constructor •() → self::Class<self::Class::T*>*
class Class<T extends self::A> extends core::Object {
synthetic constructor •() → self::Class<self::Class::T>
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension<T extends self::B*> on self::Class<T*>* {
extension Extension<T extends self::B> on self::Class<T> {
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
method genericMethod = self::Extension|genericMethod;
tearoff genericMethod = self::Extension|get#genericMethod;
}
static final field self::A* a = new self::A::•();
static final field self::Class<self::A*>* classA = new self::Class::•<self::A*>();
static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:60:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
static final field self::A a = new self::A::•();
static final field self::Class<self::A> classA = new self::Class::•<self::A>();
static final field self::Class<self::B> classB = new self::Class::•<self::B>();
static final field dynamic field1 = invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:61:23: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
final field1 = classA.method(); // Expect method not found.
^^^^^^" in self::classA{<unresolved>}.method();
static final field dynamic field2 = self::Extension|method<self::A*>(self::classA);
static final field dynamic field3 = self::Extension|method<self::A*>(self::classA);
static final field dynamic field4 = self::Extension|method<self::B*>(self::classA as{TypeError} self::Class<self::B*>*);
static final field dynamic field5 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field6 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field7 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
static final field dynamic field8 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field9 = self::Extension|genericMethod<self::A*, self::A*>(self::classA, self::a);
static final field dynamic field10 = self::Extension|genericMethod<self::A*, self::B*>(self::classA, self::a as{TypeError} self::B*);
static final field dynamic field11 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
static final field dynamic field12 = self::Extension|genericMethod<self::B*, self::A*>(self::classA as{TypeError} self::Class<self::B*>*, self::a);
static final field dynamic field13 = self::Extension|genericMethod<self::B*, self::B*>(self::classA as{TypeError} self::Class<self::B*>*, self::a as{TypeError} self::B*);
static final field self::Class<self::B*>* classB = new self::Class::•<self::B*>();
static final field dynamic field14 = self::Extension|method<self::B*>(self::classB);
static final field dynamic field15 = self::Extension|method<self::B*>(self::classB);
static final field dynamic field16 = self::Extension|method<self::A*>(self::classB);
static final field dynamic field17 = self::Extension|method<self::B*>(self::classB);
static final field dynamic field18 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field19 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field20 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static final field dynamic field21 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field22 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field23 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static final field dynamic field24 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
static final field dynamic field25 = self::Extension|genericMethod<self::A*, self::A*>(self::classB, self::a);
static final field dynamic field26 = self::Extension|genericMethod<self::A*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static final field dynamic field27 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field28 = self::Extension|genericMethod<self::B*, self::A*>(self::classB, self::a);
static final field dynamic field29 = self::Extension|genericMethod<self::B*, self::B*>(self::classB, self::a as{TypeError} self::B*);
static method Extension|method<T extends self::B*>(lowered final self::Class<self::Extension|method::T*>* #this) → dynamic {}
static method Extension|get#method<T extends self::B*>(lowered final self::Class<self::Extension|get#method::T*>* #this) → () →* dynamic
return () → dynamic => self::Extension|method<self::Extension|get#method::T*>(#this);
static method Extension|genericMethod<T extends self::B*, S extends self::B*>(lowered final self::Class<self::Extension|genericMethod::T*>* #this, self::Extension|genericMethod::S* s) → dynamic {}
static method Extension|get#genericMethod<T extends self::B*>(lowered final self::Class<self::Extension|get#genericMethod::T*>* #this) → <S extends self::B*>(S*) →* dynamic
return <S extends self::B*>(S* s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T*, S*>(#this, s);
static final field dynamic field2 = self::Extension|method<self::A>(self::classA);
static final field dynamic field3 = self::Extension|method<self::A>(self::classA);
static final field dynamic field4 = self::Extension|method<self::B>(invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:64:29: Error: The argument type 'Class<A>' can't be assigned to the parameter type 'Class<B>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field4 = Extension<B>(classA).method();
^" in self::classA as{TypeError,ForNonNullableByDefault} self::Class<self::B>);
static final field dynamic field5 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field6 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field7 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:67:51: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field7 = Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field8 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field9 = self::Extension|genericMethod<self::A, self::A>(self::classA, self::a);
static final field dynamic field10 = self::Extension|genericMethod<self::A, self::B>(self::classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:72:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field11 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field12 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field13 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:77:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field13 = Extension<B>(classB).genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field14 = self::Extension|method<self::B>(self::classB);
static final field dynamic field15 = self::Extension|method<self::B>(self::classB);
static final field dynamic field16 = self::Extension|method<self::A>(self::classB);
static final field dynamic field17 = self::Extension|method<self::B>(self::classB);
static final field dynamic field18 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field19 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field20 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:86:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field20 = classB.genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field21 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field22 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field23 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:90:52: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field23 = Extension(classB).genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field24 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
static final field dynamic field25 = self::Extension|genericMethod<self::A, self::A>(self::classB, self::a);
static final field dynamic field26 = self::Extension|genericMethod<self::A, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:96:43: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static final field dynamic field27 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field28 = self::Extension|genericMethod<self::B, self::A>(self::classB, self::a);
static final field dynamic field29 = self::Extension|genericMethod<self::B, self::B>(self::classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:101:55: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
final field29 = Extension<B>(classB).genericMethod<B>(a);
^" in self::a as{TypeError,ForNonNullableByDefault} self::B);
static method Extension|method<T extends self::B>(lowered final self::Class<self::Extension|method::T> #this) → dynamic {}
static method Extension|get#method<T extends self::B>(lowered final self::Class<self::Extension|get#method::T> #this) → () → dynamic
return () → dynamic => self::Extension|method<self::Extension|get#method::T>(#this);
static method Extension|genericMethod<T extends self::B, S extends self::B>(lowered final self::Class<self::Extension|genericMethod::T> #this, self::Extension|genericMethod::S s) → dynamic {}
static method Extension|get#genericMethod<T extends self::B>(lowered final self::Class<self::Extension|get#genericMethod::T> #this) → <S extends self::B>(S) → dynamic
return <S extends self::B>(S s) → dynamic => self::Extension|genericMethod<self::Extension|get#genericMethod::T, S>(#this, s);
static method main() → dynamic {}
static method test() → dynamic {
self::A* a;
self::Class<self::A*>* classA = new self::Class::•<self::A*>();
static method test(self::A a) → dynamic {
self::Class<self::A> classA = new self::Class::•<self::A>();
self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:24:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method(); // Expect method not found.
^^^^^^" in classA{<unresolved>}.method();
self::Extension|method<self::A*>(classA);
self::Extension|method<self::A*>(classA);
self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
self::Class<self::B*>* classB = new self::Class::•<self::B*>();
self::Extension|method<self::B*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|method<self::A*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|method<self::A>(classA);
self::Extension|method<self::A>(classA);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:30:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:33:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:36:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|method<self::B>(classB);
self::Extension|method<self::B>(classB);
self::Extension|method<self::A>(classB);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:45:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
classB.genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:48:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:51:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds.dart:54:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart() → dynamic {
self::A* a;
self::Class<self::A*>* classA = new self::Class::•<self::A*>();
static method /* from org-dartlang-testcase:///check_bounds_lib.dart */ testInPart(self::A a) → dynamic {
self::Class<self::A> classA = new self::Class::•<self::A>();
self::Class<self::B> classB = new self::Class::•<self::B>();
invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:11:10: Error: The method 'method' isn't defined for the class 'Class<A>'.
- 'Class' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'method'.
classA.method();
^^^^^^" in classA{<unresolved>}.method();
self::Extension|method<self::A*>(classA);
self::Extension|method<self::A*>(classA);
self::Extension|method<self::B*>(classA as{TypeError} self::Class<self::B*>*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::A*>(classA, a);
self::Extension|genericMethod<self::A*, self::B*>(classA, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::A*>(classA as{TypeError} self::Class<self::B*>*, a);
self::Extension|genericMethod<self::B*, self::B*>(classA as{TypeError} self::Class<self::B*>*, a as{TypeError} self::B*);
self::Class<self::B*>* classB = new self::Class::•<self::B*>();
self::Extension|method<self::B*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|method<self::A*>(classB);
self::Extension|method<self::B*>(classB);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::A*>(classB, a);
self::Extension|genericMethod<self::A*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::A*>(classB, a);
self::Extension|genericMethod<self::B*, self::B*>(classB, a as{TypeError} self::B*);
self::Extension|method<self::A>(classA);
self::Extension|method<self::A>(classA);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:17:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::A>(classA, a);
self::Extension|genericMethod<self::A, self::B>(classA, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:20:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:23:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|method<self::B>(classB);
self::Extension|method<self::B>(classB);
self::Extension|method<self::A>(classB);
self::Extension|method<self::B>(classB);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:32:27: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
classB.genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:35:38: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::A>(classB, a);
self::Extension|genericMethod<self::A, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:38:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<A>(classB).genericMethod<B>(a); // Expect bounds mismatch.
^" in a as{TypeError,ForNonNullableByDefault} self::B);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::A>(classB, a);
self::Extension|genericMethod<self::B, self::B>(classB, invalid-expression "pkg/front_end/testcases/extensions/check_bounds_lib.dart:41:41: Error: The argument type 'A' can't be assigned to the parameter type 'B'.
- 'A' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
- 'B' is from 'pkg/front_end/testcases/extensions/check_bounds.dart'.
Extension<B>(classB).genericMethod<B>(a);
^" in a as{TypeError,ForNonNullableByDefault} self::B);
}
@@ -1,28 +1,27 @@
// Copyright (c) 2019, 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.
// @dart=2.9
part of 'check_bounds.dart';
testInPart() {
A a;
testInPart(A a) {
Class<A> classA = new Class<A>();
Class<B> classB = new Class<B>();
classA.method();
Extension(classA).method(); // Expect bounds mismatch.
Extension<A>(classA).method(); // Expect bounds mismatch.
Extension<B>(classA).method();
Extension<B>(classB).method();
Extension(classA).genericMethod(a); // Expect bounds mismatch.
Extension(classA).genericMethod<A>(a); // Expect bounds mismatch.
Extension(classA).genericMethod<B>(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod<A>(a); // Expect bounds mismatch.
Extension<A>(classA).genericMethod<B>(a); // Expect bounds mismatch.
Extension<B>(classA).genericMethod(a); // Expect bounds mismatch.
Extension<B>(classA).genericMethod<A>(a); // Expect bounds mismatch.
Extension<B>(classA).genericMethod<B>(a);
Extension<B>(classB).genericMethod(a); // Expect bounds mismatch.
Extension<B>(classB).genericMethod<A>(a); // Expect bounds mismatch.
Extension<B>(classB).genericMethod<B>(a);
Class<B> classB = new Class<B>();
classB.method();
Extension(classB).method();
Extension<A>(classB).method(); // Expect bounds mismatch.
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
// @dart=2.9
class Number {
final int value;
@@ -408,7 +408,7 @@ testExplicitIntProperties() {
expect(n0, IntClassExtension(v).property);
}
testExplicitNullAwareProperties(Class v) {
testExplicitNullAwareProperties(Class? v) {
Number n0 = new Number(0);
Number n1 = new Number(1);
Number n2 = new Number(2);
@@ -446,7 +446,7 @@ testExplicitNullAwareProperties(Class v) {
expect(n0, ClassExtension(v)?.property, v == null);
}
testExplicitNullAwareIntProperties(IntClass v) {
testExplicitNullAwareIntProperties(IntClass? v) {
int n0 = 0;
int n1 = 1;
int n2 = 2;
@@ -1,4 +1,3 @@
// @dart = 2.9
class Number {
final int value;
Number(this.value);
@@ -40,6 +39,6 @@ testProperties() {}
testIntProperties() {}
testExplicitProperties() {}
testExplicitIntProperties() {}
testExplicitNullAwareProperties(Class v) {}
testExplicitNullAwareIntProperties(IntClass v) {}
testExplicitNullAwareProperties(Class? v) {}
testExplicitNullAwareIntProperties(IntClass? v) {}
expect(expected, actual, [expectNull = false]) {}
@@ -1,4 +1,3 @@
// @dart = 2.9
class Class {
Class(this.field);
Number field;
@@ -38,8 +37,8 @@ extension NumberExtension on Number {
main() {}
testExplicitIntProperties() {}
testExplicitNullAwareIntProperties(IntClass v) {}
testExplicitNullAwareProperties(Class v) {}
testExplicitNullAwareIntProperties(IntClass? v) {}
testExplicitNullAwareProperties(Class? v) {}
testExplicitProperties() {}
testIntProperties() {}
testLocals() {}
@@ -1,117 +1,90 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Number extends core::Object {
final field core::int* value;
constructor •(core::int* value) → self::Number*
final field core::int value;
constructor •(core::int value) → self::Number
: self::Number::value = value, super core::Object::•()
;
get hashCode() → core::int*
return this.{self::Number::value}{core::int*}.{core::num::hashCode}{core::int*};
operator ==(core::Object* other) → core::bool*
return other is self::Number* && this.{self::Number::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Number*}.{self::Number::value}{core::int*};
method toString() → core::String*
return "Number(${this.{self::Number::value}{core::int*}})";
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
get hashCode() → core::int
return this.{self::Number::value}{core::int}.{core::num::hashCode}{core::int};
operator ==(core::Object other) → core::bool
return other is{ForNonNullableByDefault} self::Number && this.{self::Number::value}{core::int} =={core::num::==}{(core::Object) → core::bool} other{self::Number}.{self::Number::value}{core::int};
method toString() → core::String
return "Number(${this.{self::Number::value}{core::int}})";
}
class Class extends core::Object {
field self::Number* field;
constructor •(self::Number* field) → self::Class*
field self::Number field;
constructor •(self::Number field) → self::Class
: self::Class::field = field, super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class IntClass extends core::Object {
field core::int* field;
constructor •(core::int* field) → self::IntClass*
field core::int field;
constructor •(core::int field) → self::IntClass
: self::IntClass::field = field, super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension NumberExtension on self::Number* {
extension NumberExtension on self::Number {
operator + = self::NumberExtension|+;
operator - = self::NumberExtension|-;
}
extension ClassExtension on self::Class* {
extension ClassExtension on self::Class {
get property = self::ClassExtension|get#property;
method testImplicitProperties = self::ClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::ClassExtension|get#testImplicitProperties;
set property = self::ClassExtension|set#property;
}
extension IntClassExtension on self::IntClass* {
extension IntClassExtension on self::IntClass {
get property = self::IntClassExtension|get#property;
method testImplicitProperties = self::IntClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::IntClassExtension|get#testImplicitProperties;
set property = self::IntClassExtension|set#property;
}
static method NumberExtension|+(lowered final self::Number* #this, core::Object* other) → self::Number* {
if(other is core::int*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{core::int*}){(core::num*) →* core::int*});
static method NumberExtension|+(lowered final self::Number #this, core::Object other) → self::Number {
if(other is{ForNonNullableByDefault} core::int) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{core::int}){(core::num) → core::int});
}
else
if(other is self::Number*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
if(other is{ForNonNullableByDefault} self::Number) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
static method NumberExtension|-(lowered final self::Number* #this, core::Object* other) → self::Number* {
if(other is core::int*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{core::int*}){(core::num*) →* core::int*});
static method NumberExtension|-(lowered final self::Number #this, core::Object other) → self::Number {
if(other is{ForNonNullableByDefault} core::int) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{core::int}){(core::num) → core::int});
}
else
if(other is self::Number*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
if(other is{ForNonNullableByDefault} self::Number) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
static method ClassExtension|get#property(lowered final self::Class* #this) → self::Number*
return #this.{self::Class::field}{self::Number*};
static method ClassExtension|set#property(lowered final self::Class* #this, self::Number* value) → void {
static method ClassExtension|get#property(lowered final self::Class #this) → self::Number
return #this.{self::Class::field}{self::Number};
static method ClassExtension|set#property(lowered final self::Class #this, self::Number value) → void {
#this.{self::Class::field} = value;
}
static method ClassExtension|testImplicitProperties(lowered final self::Class* #this) → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
static method ClassExtension|testImplicitProperties(lowered final self::Class #this) → dynamic {
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::expect(n0, self::ClassExtension|get#property(#this));
self::expect(n1, let final self::Number* #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
self::expect(n2, let final self::Number* #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
self::expect(n0, let final self::Number* #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
self::expect(n1, let final self::Number* #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
self::expect(n0, let final self::Number* #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
self::expect(n1, let final self::Number* #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
self::expect(n0, let final self::Number* #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
self::expect(n0, let final self::Number* #t15 = self::ClassExtension|get#property(#this) in let final self::Number* #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
self::expect(n1, let final self::Number* #t17 = self::ClassExtension|get#property(#this) in let final self::Number* #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
self::expect(n1, let final self::Number #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
self::expect(n2, let final self::Number #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
self::expect(n0, let final self::Number #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
self::expect(n1, let final self::Number #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
self::expect(n0, let final self::Number #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
self::expect(n1, let final self::Number #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
self::expect(n0, let final self::Number #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
self::expect(n0, let final self::Number #t15 = self::ClassExtension|get#property(#this) in let final self::Number #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
self::expect(n1, let final self::Number #t17 = self::ClassExtension|get#property(#this) in let final self::Number #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
self::expect(n0, self::ClassExtension|get#property(#this));
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), n1));
@@ -124,58 +97,58 @@ static method ClassExtension|testImplicitProperties(lowered final self::Class* #
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), n1));
self::expect(n0, self::ClassExtension|get#property(#this));
let final self::Number* #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
let final self::Number #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
self::expect(n1, self::ClassExtension|get#property(#this));
let final self::Number* #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
let final self::Number #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), 1));
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), 1));
self::expect(n0, self::ClassExtension|get#property(#this));
}
static method ClassExtension|get#testImplicitProperties(lowered final self::Class* #this) → () →* dynamic
static method ClassExtension|get#testImplicitProperties(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::ClassExtension|testImplicitProperties(#this);
static method IntClassExtension|get#property(lowered final self::IntClass* #this) → core::int*
return #this.{self::IntClass::field}{core::int*};
static method IntClassExtension|set#property(lowered final self::IntClass* #this, core::int* value) → void {
static method IntClassExtension|get#property(lowered final self::IntClass #this) → core::int
return #this.{self::IntClass::field}{core::int};
static method IntClassExtension|set#property(lowered final self::IntClass #this, core::int value) → void {
#this.{self::IntClass::field} = value;
}
static method IntClassExtension|testImplicitProperties(lowered final self::IntClass* #this) → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
static method IntClassExtension|testImplicitProperties(lowered final self::IntClass #this) → dynamic {
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::expect(n0, self::IntClassExtension|get#property(#this));
self::expect(n1, let final core::int* #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
self::expect(n2, let final core::int* #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
self::expect(n0, let final core::int* #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
self::expect(n1, let final core::int* #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
self::expect(n0, let final core::int* #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
self::expect(n1, let final core::int* #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
self::expect(n0, let final core::int* #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
self::expect(n0, let final core::int* #t37 = self::IntClassExtension|get#property(#this) in let final core::int* #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num*) →* core::int*}) in #t37);
self::expect(n1, let final core::int* #t39 = self::IntClassExtension|get#property(#this) in let final core::int* #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num*) →* core::int*}) in #t39);
self::expect(n1, let final core::int #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
self::expect(n2, let final core::int #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
self::expect(n0, let final core::int #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
self::expect(n1, let final core::int #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
self::expect(n0, let final core::int #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
self::expect(n1, let final core::int #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
self::expect(n0, let final core::int #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
self::expect(n0, let final core::int #t37 = self::IntClassExtension|get#property(#this) in let final core::int #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num) → core::int}) in #t37);
self::expect(n1, let final core::int #t39 = self::IntClassExtension|get#property(#this) in let final core::int #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num) → core::int}) in #t39);
self::expect(n0, self::IntClassExtension|get#property(#this));
self::expect(n0, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
let final core::int* #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
let final core::int #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
self::expect(n1, self::IntClassExtension|get#property(#this));
let final core::int* #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
let final core::int #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
self::expect(n0, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
}
static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass* #this) → () →* dynamic
static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass #this) → () → dynamic
return () → dynamic => self::IntClassExtension|testImplicitProperties(#this);
static method main() → dynamic {
self::testLocals();
@@ -191,10 +164,10 @@ static method main() → dynamic {
self::IntClassExtension|testImplicitProperties(new self::IntClass::•(0));
}
static method testLocals() → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::Number* v = n0;
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::Number v = n0;
self::expect(n0, v);
self::expect(n1, v = self::NumberExtension|+(v, n1));
self::expect(n2, v = self::NumberExtension|+(v, n1));
@@ -203,8 +176,8 @@ static method testLocals() → dynamic {
self::expect(n0, v = self::NumberExtension|-(v, n1));
self::expect(n1, v = self::NumberExtension|+(v, 1));
self::expect(n0, v = self::NumberExtension|-(v, 1));
self::expect(n0, let final self::Number* #t45 = v in let final self::Number* #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
self::expect(n1, let final self::Number* #t47 = v in let final self::Number* #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
self::expect(n0, let final self::Number #t45 = v in let final self::Number #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
self::expect(n1, let final self::Number #t47 = v in let final self::Number #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
self::expect(n0, v);
self::expect(n0, v);
v = self::NumberExtension|+(v, n1);
@@ -227,284 +200,284 @@ static method testLocals() → dynamic {
self::expect(n0, v);
}
static method testProperties() → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::Class* v = new self::Class::•(n0);
self::expect(n0, v.{self::Class::field}{self::Number*});
self::expect(n1, let final self::Class* #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number*}, n1));
self::expect(n2, let final self::Class* #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number*}, n1));
self::expect(n0, let final self::Class* #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number*}, n2));
self::expect(n1, let final self::Class* #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number*}, n1));
self::expect(n0, let final self::Class* #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number*}, n1));
self::expect(n1, let final self::Class* #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number*}, 1));
self::expect(n0, let final self::Class* #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number*}, 1));
self::expect(n0, let final self::Class* #t56 = v in let final self::Number* #t57 = #t56.{self::Class::field}{self::Number*} in let final self::Number* #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
self::expect(n1, let final self::Class* #t59 = v in let final self::Number* #t60 = #t59.{self::Class::field}{self::Number*} in let final self::Number* #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
self::expect(n0, v.{self::Class::field}{self::Number*});
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number*}, n1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number*}, n1);
self::expect(n2, v.{self::Class::field}{self::Number*});
let final self::Class* #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number*}, n2);
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number*}, n1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number*}, n1);
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number*}, 1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number*}, 1);
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number*}, 1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number*}, 1);
self::expect(n0, v.{self::Class::field}{self::Number*});
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::Class v = new self::Class::•(n0);
self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n1, let final self::Class #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number}, n1));
self::expect(n2, let final self::Class #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number}, n1));
self::expect(n0, let final self::Class #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number}, n2));
self::expect(n1, let final self::Class #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number}, n1));
self::expect(n0, let final self::Class #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number}, n1));
self::expect(n1, let final self::Class #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number}, 1));
self::expect(n0, let final self::Class #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number}, 1));
self::expect(n0, let final self::Class #t56 = v in let final self::Number #t57 = #t56.{self::Class::field}{self::Number} in let final self::Number #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
self::expect(n1, let final self::Class #t59 = v in let final self::Number #t60 = #t59.{self::Class::field}{self::Number} in let final self::Number #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number}, n1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number}, n1);
self::expect(n2, v.{self::Class::field}{self::Number});
let final self::Class #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number}, n2);
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number}, n1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number}, n1);
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number}, 1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number}, 1);
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number}, 1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number}, 1);
self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n1, let final self::Class* #t71 = v in let final self::Number* #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
self::expect(n2, let final self::Class* #t74 = v in let final self::Number* #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
self::expect(n0, let final self::Class* #t77 = v in let final self::Number* #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
self::expect(n1, let final self::Class* #t80 = v in let final self::Number* #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
self::expect(n0, let final self::Class* #t83 = v in let final self::Number* #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
self::expect(n1, let final self::Class* #t86 = v in let final self::Number* #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
self::expect(n0, let final self::Class* #t89 = v in let final self::Number* #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
self::expect(n0, let final self::Class* #t92 = v in let final self::Number* #t93 = self::ClassExtension|get#property(#t92) in let final self::Number* #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
self::expect(n1, let final self::Class* #t95 = v in let final self::Number* #t96 = self::ClassExtension|get#property(#t95) in let final self::Number* #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
self::expect(n1, let final self::Class #t71 = v in let final self::Number #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
self::expect(n2, let final self::Class #t74 = v in let final self::Number #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
self::expect(n0, let final self::Class #t77 = v in let final self::Number #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
self::expect(n1, let final self::Class #t80 = v in let final self::Number #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
self::expect(n0, let final self::Class #t83 = v in let final self::Number #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
self::expect(n1, let final self::Class #t86 = v in let final self::Number #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
self::expect(n0, let final self::Class #t89 = v in let final self::Number #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
self::expect(n0, let final self::Class #t92 = v in let final self::Number #t93 = self::ClassExtension|get#property(#t92) in let final self::Number #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
self::expect(n1, let final self::Class #t95 = v in let final self::Number #t96 = self::ClassExtension|get#property(#t95) in let final self::Number #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
let final self::Class #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
let final self::Class #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
self::expect(n2, self::ClassExtension|get#property(v));
let final self::Class* #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
let final self::Class #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
let final self::Class #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
let final self::Class #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t103 = v in let final self::Number* #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
let final self::Class #t103 = v in let final self::Number #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t106 = v in let final self::Number* #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
let final self::Class #t106 = v in let final self::Number #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
let final self::Class #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
let final self::Class #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testIntProperties() → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
self::IntClass* v = new self::IntClass::•(n0);
self::expect(n0, v.{self::IntClass::field}{core::int*});
self::expect(n1, let final self::IntClass* #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n2, let final self::IntClass* #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t118 = v in let final core::int* #t119 = #t118.{self::IntClass::field}{core::int*} in let final core::int* #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num*) →* core::int*} in #t119);
self::expect(n1, let final self::IntClass* #t121 = v in let final core::int* #t122 = #t121.{self::IntClass::field}{core::int*} in let final core::int* #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num*) →* core::int*} in #t122);
self::expect(n0, v.{self::IntClass::field}{core::int*});
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
self::expect(n2, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::IntClass v = new self::IntClass::•(n0);
self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n1, let final self::IntClass #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, let final self::IntClass #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int});
self::expect(n1, let final self::IntClass #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int});
self::expect(n1, let final self::IntClass #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t118 = v in let final core::int #t119 = #t118.{self::IntClass::field}{core::int} in let final core::int #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num) → core::int} in #t119);
self::expect(n1, let final self::IntClass #t121 = v in let final core::int #t122 = #t121.{self::IntClass::field}{core::int} in let final core::int #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num) → core::int} in #t122);
self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
self::expect(n2, v.{self::IntClass::field}{core::int});
let final self::IntClass #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n1, let final self::IntClass* #t133 = v in let final core::int* #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
self::expect(n2, let final self::IntClass* #t136 = v in let final core::int* #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
self::expect(n0, let final self::IntClass* #t139 = v in let final core::int* #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
self::expect(n1, let final self::IntClass* #t142 = v in let final core::int* #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
self::expect(n0, let final self::IntClass* #t145 = v in let final core::int* #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
self::expect(n1, let final self::IntClass* #t148 = v in let final core::int* #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
self::expect(n0, let final self::IntClass* #t151 = v in let final core::int* #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
self::expect(n0, let final self::IntClass* #t154 = v in let final core::int* #t155 = self::IntClassExtension|get#property(#t154) in let final core::int* #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num*) →* core::int*}) in #t155);
self::expect(n1, let final self::IntClass* #t157 = v in let final core::int* #t158 = self::IntClassExtension|get#property(#t157) in let final core::int* #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num*) →* core::int*}) in #t158);
self::expect(n1, let final self::IntClass #t133 = v in let final core::int #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num) → core::int} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
self::expect(n2, let final self::IntClass #t136 = v in let final core::int #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num) → core::int} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
self::expect(n0, let final self::IntClass #t139 = v in let final core::int #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num) → core::int} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
self::expect(n1, let final self::IntClass #t142 = v in let final core::int #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num) → core::int} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
self::expect(n0, let final self::IntClass #t145 = v in let final core::int #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num) → core::int} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
self::expect(n1, let final self::IntClass #t148 = v in let final core::int #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num) → core::int} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
self::expect(n0, let final self::IntClass #t151 = v in let final core::int #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num) → core::int} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
self::expect(n0, let final self::IntClass #t154 = v in let final core::int #t155 = self::IntClassExtension|get#property(#t154) in let final core::int #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num) → core::int}) in #t155);
self::expect(n1, let final self::IntClass #t157 = v in let final core::int #t158 = self::IntClassExtension|get#property(#t157) in let final core::int #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num) → core::int}) in #t158);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
let final self::IntClass* #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num*) →* core::int*});
let final self::IntClass #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num*) →* core::int*});
let final self::IntClass #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t165 = v in let final core::int* #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
let final self::IntClass #t165 = v in let final core::int #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num) → core::int} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t168 = v in let final core::int* #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
let final self::IntClass #t168 = v in let final core::int #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num) → core::int} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num*) →* core::int*});
let final self::IntClass #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num*) →* core::int*});
let final self::IntClass #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
static method testExplicitProperties() → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::Class* v = new self::Class::•(n0);
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::Class v = new self::Class::•(n0);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n1, let final self::Class* #t173 = v in let final self::Number* #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
self::expect(n2, let final self::Class* #t176 = v in let final self::Number* #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
self::expect(n0, let final self::Class* #t179 = v in let final self::Number* #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
self::expect(n1, let final self::Class* #t182 = v in let final self::Number* #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
self::expect(n0, let final self::Class* #t185 = v in let final self::Number* #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
self::expect(n1, let final self::Class* #t188 = v in let final self::Number* #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
self::expect(n0, let final self::Class* #t191 = v in let final self::Number* #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
self::expect(n0, let final self::Class* #t194 = v in let final self::Number* #t195 = self::ClassExtension|get#property(#t194) in let final self::Number* #t196 = let final self::Number* #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
self::expect(n1, let final self::Class* #t199 = v in let final self::Number* #t200 = self::ClassExtension|get#property(#t199) in let final self::Number* #t201 = let final self::Number* #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
self::expect(n1, let final self::Class #t173 = v in let final self::Number #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
self::expect(n2, let final self::Class #t176 = v in let final self::Number #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
self::expect(n0, let final self::Class #t179 = v in let final self::Number #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
self::expect(n1, let final self::Class #t182 = v in let final self::Number #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
self::expect(n0, let final self::Class #t185 = v in let final self::Number #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
self::expect(n1, let final self::Class #t188 = v in let final self::Number #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
self::expect(n0, let final self::Class #t191 = v in let final self::Number #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
self::expect(n0, let final self::Class #t194 = v in let final self::Number #t195 = self::ClassExtension|get#property(#t194) in let final self::Number #t196 = let final self::Number #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
self::expect(n1, let final self::Class #t199 = v in let final self::Number #t200 = self::ClassExtension|get#property(#t199) in let final self::Number #t201 = let final self::Number #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
let final self::Class #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
let final self::Class #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
self::expect(n2, self::ClassExtension|get#property(v));
let final self::Class* #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
let final self::Class #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
let final self::Class #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
let final self::Class #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t209 = v in let final self::Number* #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
let final self::Class #t209 = v in let final self::Number #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t212 = v in let final self::Number* #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
let final self::Class #t212 = v in let final self::Number #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
let final self::Class #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
let final self::Class #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testExplicitIntProperties() → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
self::IntClass* v = new self::IntClass::•(n0);
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::IntClass v = new self::IntClass::•(n0);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n1, let final self::IntClass* #t217 = v in let final core::int* #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
self::expect(n2, let final self::IntClass* #t220 = v in let final core::int* #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
self::expect(n0, let final self::IntClass* #t223 = v in let final core::int* #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
self::expect(n1, let final self::IntClass* #t226 = v in let final core::int* #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
self::expect(n0, let final self::IntClass* #t229 = v in let final core::int* #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
self::expect(n1, let final self::IntClass* #t232 = v in let final core::int* #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
self::expect(n0, let final self::IntClass* #t235 = v in let final core::int* #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
self::expect(n0, let final self::IntClass* #t238 = v in let final core::int* #t239 = self::IntClassExtension|get#property(#t238) in let final core::int* #t240 = let final core::int* #t241 = #t239.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
self::expect(n1, let final self::IntClass* #t243 = v in let final core::int* #t244 = self::IntClassExtension|get#property(#t243) in let final core::int* #t245 = let final core::int* #t246 = #t244.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
self::expect(n1, let final self::IntClass #t217 = v in let final core::int #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num) → core::int} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
self::expect(n2, let final self::IntClass #t220 = v in let final core::int #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num) → core::int} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
self::expect(n0, let final self::IntClass #t223 = v in let final core::int #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num) → core::int} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
self::expect(n1, let final self::IntClass #t226 = v in let final core::int #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num) → core::int} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
self::expect(n0, let final self::IntClass #t229 = v in let final core::int #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num) → core::int} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
self::expect(n1, let final self::IntClass #t232 = v in let final core::int #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num) → core::int} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
self::expect(n0, let final self::IntClass #t235 = v in let final core::int #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num) → core::int} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
self::expect(n0, let final self::IntClass #t238 = v in let final core::int #t239 = self::IntClassExtension|get#property(#t238) in let final core::int #t240 = let final core::int #t241 = #t239.{core::num::+}(1){(core::num) → core::int} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
self::expect(n1, let final self::IntClass #t243 = v in let final core::int #t244 = self::IntClassExtension|get#property(#t243) in let final core::int #t245 = let final core::int #t246 = #t244.{core::num::-}(1){(core::num) → core::int} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
let final self::IntClass* #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num*) →* core::int*});
let final self::IntClass #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num*) →* core::int*});
let final self::IntClass #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t253 = v in let final core::int* #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
let final self::IntClass #t253 = v in let final core::int #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num) → core::int} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t256 = v in let final core::int* #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
let final self::IntClass #t256 = v in let final core::int #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num) → core::int} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num*) →* core::int*});
let final self::IntClass #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num*) →* core::int*});
let final self::IntClass #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
static method testExplicitNullAwareProperties(self::Class* v) → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::expect(n0, let final self::Class* #t261 = v in #t261 == null ?{self::Number*} null : self::ClassExtension|get#property(#t261), v == null);
self::expect(n1, let final self::Class* #t262 = v in #t262 == null ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v == null);
self::expect(n2, let final self::Class* #t265 = v in #t265 == null ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v == null);
self::expect(n0, let final self::Class* #t268 = v in #t268 == null ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v == null);
self::expect(n1, let final self::Class* #t271 = v in #t271 == null ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v == null);
self::expect(n0, let final self::Class* #t274 = v in #t274 == null ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v == null);
self::expect(n1, let final self::Class* #t277 = v in #t277 == null ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v == null);
self::expect(n0, let final self::Class* #t280 = v in #t280 == null ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v == null);
self::expect(n0, let final self::Class* #t283 = v in #t283 == null ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v == null);
self::expect(n1, let final self::Class* #t288 = v in #t288 == null ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v == null);
self::expect(n0, let final self::Class* #t293 = v in #t293 == null ?{self::Number*} null : self::ClassExtension|get#property(#t293), v == null);
self::expect(n0, let final self::Class* #t294 = v in #t294 == null ?{self::Number*} null : self::ClassExtension|get#property(#t294), v == null);
let final self::Class* #t295 = v in #t295 == null ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
self::expect(n1, let final self::Class* #t296 = v in #t296 == null ?{self::Number*} null : self::ClassExtension|get#property(#t296), v == null);
let final self::Class* #t297 = v in #t297 == null ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
self::expect(n2, let final self::Class* #t298 = v in #t298 == null ?{self::Number*} null : self::ClassExtension|get#property(#t298), v == null);
let final self::Class* #t299 = v in #t299 == null ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
self::expect(n0, let final self::Class* #t300 = v in #t300 == null ?{self::Number*} null : self::ClassExtension|get#property(#t300), v == null);
let final self::Class* #t301 = v in #t301 == null ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
self::expect(n1, let final self::Class* #t302 = v in #t302 == null ?{self::Number*} null : self::ClassExtension|get#property(#t302), v == null);
let final self::Class* #t303 = v in #t303 == null ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
self::expect(n0, let final self::Class* #t304 = v in #t304 == null ?{self::Number*} null : self::ClassExtension|get#property(#t304), v == null);
let final self::Class* #t305 = v in #t305 == null ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
self::expect(n1, let final self::Class* #t308 = v in #t308 == null ?{self::Number*} null : self::ClassExtension|get#property(#t308), v == null);
let final self::Class* #t309 = v in #t309 == null ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
self::expect(n0, let final self::Class* #t312 = v in #t312 == null ?{self::Number*} null : self::ClassExtension|get#property(#t312), v == null);
let final self::Class* #t313 = v in #t313 == null ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
self::expect(n1, let final self::Class* #t314 = v in #t314 == null ?{self::Number*} null : self::ClassExtension|get#property(#t314), v == null);
let final self::Class* #t315 = v in #t315 == null ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
self::expect(n0, let final self::Class* #t316 = v in #t316 == null ?{self::Number*} null : self::ClassExtension|get#property(#t316), v == null);
static method testExplicitNullAwareProperties(self::Class? v) → dynamic {
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::expect(n0, let final self::Class? #t261 = v in #t261 == null ?{self::Number?} null : self::ClassExtension|get#property(#t261{self::Class}), v == null);
self::expect(n1, let final self::Class? #t262 = v in #t262 == null ?{self::Number?} null : let final self::Number #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262{self::Class}), n1) in let final void #t264 = self::ClassExtension|set#property(#t262{self::Class}, #t263) in #t263, v == null);
self::expect(n2, let final self::Class? #t265 = v in #t265 == null ?{self::Number?} null : let final self::Number #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265{self::Class}), n1) in let final void #t267 = self::ClassExtension|set#property(#t265{self::Class}, #t266) in #t266, v == null);
self::expect(n0, let final self::Class? #t268 = v in #t268 == null ?{self::Number?} null : let final self::Number #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268{self::Class}), n2) in let final void #t270 = self::ClassExtension|set#property(#t268{self::Class}, #t269) in #t269, v == null);
self::expect(n1, let final self::Class? #t271 = v in #t271 == null ?{self::Number?} null : let final self::Number #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271{self::Class}), n1) in let final void #t273 = self::ClassExtension|set#property(#t271{self::Class}, #t272) in #t272, v == null);
self::expect(n0, let final self::Class? #t274 = v in #t274 == null ?{self::Number?} null : let final self::Number #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274{self::Class}), n1) in let final void #t276 = self::ClassExtension|set#property(#t274{self::Class}, #t275) in #t275, v == null);
self::expect(n1, let final self::Class? #t277 = v in #t277 == null ?{self::Number?} null : let final self::Number #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277{self::Class}), 1) in let final void #t279 = self::ClassExtension|set#property(#t277{self::Class}, #t278) in #t278, v == null);
self::expect(n0, let final self::Class? #t280 = v in #t280 == null ?{self::Number?} null : let final self::Number #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280{self::Class}), 1) in let final void #t282 = self::ClassExtension|set#property(#t280{self::Class}, #t281) in #t281, v == null);
self::expect(n0, let final self::Class? #t283 = v in #t283 == null ?{self::Number?} null : let final self::Number #t284 = self::ClassExtension|get#property(#t283{self::Class}) in let final self::Number #t285 = let final self::Number #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283{self::Class}, #t286) in #t286 in #t284, v == null);
self::expect(n1, let final self::Class? #t288 = v in #t288 == null ?{self::Number?} null : let final self::Number #t289 = self::ClassExtension|get#property(#t288{self::Class}) in let final self::Number #t290 = let final self::Number #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288{self::Class}, #t291) in #t291 in #t289, v == null);
self::expect(n0, let final self::Class? #t293 = v in #t293 == null ?{self::Number?} null : self::ClassExtension|get#property(#t293{self::Class}), v == null);
self::expect(n0, let final self::Class? #t294 = v in #t294 == null ?{self::Number?} null : self::ClassExtension|get#property(#t294{self::Class}), v == null);
let final self::Class? #t295 = v in #t295 == null ?{self::Number?} null : self::ClassExtension|set#property(#t295{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t295{self::Class}), n1));
self::expect(n1, let final self::Class? #t296 = v in #t296 == null ?{self::Number?} null : self::ClassExtension|get#property(#t296{self::Class}), v == null);
let final self::Class? #t297 = v in #t297 == null ?{self::Number?} null : self::ClassExtension|set#property(#t297{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t297{self::Class}), n1));
self::expect(n2, let final self::Class? #t298 = v in #t298 == null ?{self::Number?} null : self::ClassExtension|get#property(#t298{self::Class}), v == null);
let final self::Class? #t299 = v in #t299 == null ?{self::Number?} null : self::ClassExtension|set#property(#t299{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t299{self::Class}), n2));
self::expect(n0, let final self::Class? #t300 = v in #t300 == null ?{self::Number?} null : self::ClassExtension|get#property(#t300{self::Class}), v == null);
let final self::Class? #t301 = v in #t301 == null ?{self::Number?} null : self::ClassExtension|set#property(#t301{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t301{self::Class}), n1));
self::expect(n1, let final self::Class? #t302 = v in #t302 == null ?{self::Number?} null : self::ClassExtension|get#property(#t302{self::Class}), v == null);
let final self::Class? #t303 = v in #t303 == null ?{self::Number?} null : self::ClassExtension|set#property(#t303{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t303{self::Class}), n1));
self::expect(n0, let final self::Class? #t304 = v in #t304 == null ?{self::Number?} null : self::ClassExtension|get#property(#t304{self::Class}), v == null);
let final self::Class? #t305 = v in #t305 == null ?{self::Number?} null : let final self::Number #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305{self::Class}), 1) in let final void #t307 = self::ClassExtension|set#property(#t305{self::Class}, #t306) in #t306;
self::expect(n1, let final self::Class? #t308 = v in #t308 == null ?{self::Number?} null : self::ClassExtension|get#property(#t308{self::Class}), v == null);
let final self::Class? #t309 = v in #t309 == null ?{self::Number?} null : let final self::Number #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309{self::Class}), 1) in let final void #t311 = self::ClassExtension|set#property(#t309{self::Class}, #t310) in #t310;
self::expect(n0, let final self::Class? #t312 = v in #t312 == null ?{self::Number?} null : self::ClassExtension|get#property(#t312{self::Class}), v == null);
let final self::Class? #t313 = v in #t313 == null ?{self::Number?} null : self::ClassExtension|set#property(#t313{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t313{self::Class}), 1));
self::expect(n1, let final self::Class? #t314 = v in #t314 == null ?{self::Number?} null : self::ClassExtension|get#property(#t314{self::Class}), v == null);
let final self::Class? #t315 = v in #t315 == null ?{self::Number?} null : self::ClassExtension|set#property(#t315{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t315{self::Class}), 1));
self::expect(n0, let final self::Class? #t316 = v in #t316 == null ?{self::Number?} null : self::ClassExtension|get#property(#t316{self::Class}), v == null);
}
static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
self::expect(n0, let final self::IntClass* #t317 = v in #t317 == null ?{core::int*} null : self::IntClassExtension|get#property(#t317), v == null);
self::expect(n1, let final self::IntClass* #t318 = v in #t318 == null ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v == null);
self::expect(n2, let final self::IntClass* #t321 = v in #t321 == null ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v == null);
self::expect(n0, let final self::IntClass* #t324 = v in #t324 == null ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v == null);
self::expect(n1, let final self::IntClass* #t327 = v in #t327 == null ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v == null);
self::expect(n0, let final self::IntClass* #t330 = v in #t330 == null ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v == null);
self::expect(n1, let final self::IntClass* #t333 = v in #t333 == null ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v == null);
self::expect(n0, let final self::IntClass* #t336 = v in #t336 == null ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v == null);
self::expect(n0, let final self::IntClass* #t339 = v in #t339 == null ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v == null);
self::expect(n1, let final self::IntClass* #t344 = v in #t344 == null ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v == null);
self::expect(n0, let final self::IntClass* #t349 = v in #t349 == null ?{core::int*} null : self::IntClassExtension|get#property(#t349), v == null);
self::expect(n0, let final self::IntClass* #t350 = v in #t350 == null ?{core::int*} null : self::IntClassExtension|get#property(#t350), v == null);
let final self::IntClass* #t351 = v in #t351 == null ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t352 = v in #t352 == null ?{core::int*} null : self::IntClassExtension|get#property(#t352), v == null);
let final self::IntClass* #t353 = v in #t353 == null ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n2, let final self::IntClass* #t354 = v in #t354 == null ?{core::int*} null : self::IntClassExtension|get#property(#t354), v == null);
let final self::IntClass* #t355 = v in #t355 == null ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t356 = v in #t356 == null ?{core::int*} null : self::IntClassExtension|get#property(#t356), v == null);
let final self::IntClass* #t357 = v in #t357 == null ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t358 = v in #t358 == null ?{core::int*} null : self::IntClassExtension|get#property(#t358), v == null);
let final self::IntClass* #t359 = v in #t359 == null ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t360 = v in #t360 == null ?{core::int*} null : self::IntClassExtension|get#property(#t360), v == null);
let final self::IntClass* #t361 = v in #t361 == null ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
self::expect(n1, let final self::IntClass* #t364 = v in #t364 == null ?{core::int*} null : self::IntClassExtension|get#property(#t364), v == null);
let final self::IntClass* #t365 = v in #t365 == null ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
self::expect(n0, let final self::IntClass* #t368 = v in #t368 == null ?{core::int*} null : self::IntClassExtension|get#property(#t368), v == null);
let final self::IntClass* #t369 = v in #t369 == null ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t370 = v in #t370 == null ?{core::int*} null : self::IntClassExtension|get#property(#t370), v == null);
let final self::IntClass* #t371 = v in #t371 == null ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t372 = v in #t372 == null ?{core::int*} null : self::IntClassExtension|get#property(#t372), v == null);
static method testExplicitNullAwareIntProperties(self::IntClass? v) → dynamic {
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::expect(n0, let final self::IntClass? #t317 = v in #t317 == null ?{core::int?} null : self::IntClassExtension|get#property(#t317{self::IntClass}), v == null);
self::expect(n1, let final self::IntClass? #t318 = v in #t318 == null ?{core::int?} null : let final core::int #t319 = self::IntClassExtension|get#property(#t318{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t320 = self::IntClassExtension|set#property(#t318{self::IntClass}, #t319) in #t319, v == null);
self::expect(n2, let final self::IntClass? #t321 = v in #t321 == null ?{core::int?} null : let final core::int #t322 = self::IntClassExtension|get#property(#t321{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t323 = self::IntClassExtension|set#property(#t321{self::IntClass}, #t322) in #t322, v == null);
self::expect(n0, let final self::IntClass? #t324 = v in #t324 == null ?{core::int?} null : let final core::int #t325 = self::IntClassExtension|get#property(#t324{self::IntClass}).{core::num::-}(n2){(core::num) → core::int} in let final void #t326 = self::IntClassExtension|set#property(#t324{self::IntClass}, #t325) in #t325, v == null);
self::expect(n1, let final self::IntClass? #t327 = v in #t327 == null ?{core::int?} null : let final core::int #t328 = self::IntClassExtension|get#property(#t327{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t329 = self::IntClassExtension|set#property(#t327{self::IntClass}, #t328) in #t328, v == null);
self::expect(n0, let final self::IntClass? #t330 = v in #t330 == null ?{core::int?} null : let final core::int #t331 = self::IntClassExtension|get#property(#t330{self::IntClass}).{core::num::-}(n1){(core::num) → core::int} in let final void #t332 = self::IntClassExtension|set#property(#t330{self::IntClass}, #t331) in #t331, v == null);
self::expect(n1, let final self::IntClass? #t333 = v in #t333 == null ?{core::int?} null : let final core::int #t334 = self::IntClassExtension|get#property(#t333{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t335 = self::IntClassExtension|set#property(#t333{self::IntClass}, #t334) in #t334, v == null);
self::expect(n0, let final self::IntClass? #t336 = v in #t336 == null ?{core::int?} null : let final core::int #t337 = self::IntClassExtension|get#property(#t336{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t338 = self::IntClassExtension|set#property(#t336{self::IntClass}, #t337) in #t337, v == null);
self::expect(n0, let final self::IntClass? #t339 = v in #t339 == null ?{core::int?} null : let final core::int #t340 = self::IntClassExtension|get#property(#t339{self::IntClass}) in let final core::int #t341 = let final core::int #t342 = #t340.{core::num::+}(1){(core::num) → core::int} in let final void #t343 = self::IntClassExtension|set#property(#t339{self::IntClass}, #t342) in #t342 in #t340, v == null);
self::expect(n1, let final self::IntClass? #t344 = v in #t344 == null ?{core::int?} null : let final core::int #t345 = self::IntClassExtension|get#property(#t344{self::IntClass}) in let final core::int #t346 = let final core::int #t347 = #t345.{core::num::-}(1){(core::num) → core::int} in let final void #t348 = self::IntClassExtension|set#property(#t344{self::IntClass}, #t347) in #t347 in #t345, v == null);
self::expect(n0, let final self::IntClass? #t349 = v in #t349 == null ?{core::int?} null : self::IntClassExtension|get#property(#t349{self::IntClass}), v == null);
self::expect(n0, let final self::IntClass? #t350 = v in #t350 == null ?{core::int?} null : self::IntClassExtension|get#property(#t350{self::IntClass}), v == null);
let final self::IntClass? #t351 = v in #t351 == null ?{core::int?} null : self::IntClassExtension|set#property(#t351{self::IntClass}, self::IntClassExtension|get#property(#t351{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, let final self::IntClass? #t352 = v in #t352 == null ?{core::int?} null : self::IntClassExtension|get#property(#t352{self::IntClass}), v == null);
let final self::IntClass? #t353 = v in #t353 == null ?{core::int?} null : self::IntClassExtension|set#property(#t353{self::IntClass}, self::IntClassExtension|get#property(#t353{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, let final self::IntClass? #t354 = v in #t354 == null ?{core::int?} null : self::IntClassExtension|get#property(#t354{self::IntClass}), v == null);
let final self::IntClass? #t355 = v in #t355 == null ?{core::int?} null : self::IntClassExtension|set#property(#t355{self::IntClass}, self::IntClassExtension|get#property(#t355{self::IntClass}).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, let final self::IntClass? #t356 = v in #t356 == null ?{core::int?} null : self::IntClassExtension|get#property(#t356{self::IntClass}), v == null);
let final self::IntClass? #t357 = v in #t357 == null ?{core::int?} null : self::IntClassExtension|set#property(#t357{self::IntClass}, self::IntClassExtension|get#property(#t357{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, let final self::IntClass? #t358 = v in #t358 == null ?{core::int?} null : self::IntClassExtension|get#property(#t358{self::IntClass}), v == null);
let final self::IntClass? #t359 = v in #t359 == null ?{core::int?} null : self::IntClassExtension|set#property(#t359{self::IntClass}, self::IntClassExtension|get#property(#t359{self::IntClass}).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, let final self::IntClass? #t360 = v in #t360 == null ?{core::int?} null : self::IntClassExtension|get#property(#t360{self::IntClass}), v == null);
let final self::IntClass? #t361 = v in #t361 == null ?{core::int?} null : let final core::int #t362 = self::IntClassExtension|get#property(#t361{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t363 = self::IntClassExtension|set#property(#t361{self::IntClass}, #t362) in #t362;
self::expect(n1, let final self::IntClass? #t364 = v in #t364 == null ?{core::int?} null : self::IntClassExtension|get#property(#t364{self::IntClass}), v == null);
let final self::IntClass? #t365 = v in #t365 == null ?{core::int?} null : let final core::int #t366 = self::IntClassExtension|get#property(#t365{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t367 = self::IntClassExtension|set#property(#t365{self::IntClass}, #t366) in #t366;
self::expect(n0, let final self::IntClass? #t368 = v in #t368 == null ?{core::int?} null : self::IntClassExtension|get#property(#t368{self::IntClass}), v == null);
let final self::IntClass? #t369 = v in #t369 == null ?{core::int?} null : self::IntClassExtension|set#property(#t369{self::IntClass}, self::IntClassExtension|get#property(#t369{self::IntClass}).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, let final self::IntClass? #t370 = v in #t370 == null ?{core::int?} null : self::IntClassExtension|get#property(#t370{self::IntClass}), v == null);
let final self::IntClass? #t371 = v in #t371 == null ?{core::int?} null : self::IntClassExtension|set#property(#t371{self::IntClass}, self::IntClassExtension|get#property(#t371{self::IntClass}).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, let final self::IntClass? #t372 = v in #t372 == null ?{core::int?} null : self::IntClassExtension|get#property(#t372{self::IntClass}), v == null);
}
static method expect(dynamic expected, dynamic actual, [dynamic expectNull = #C1]) → dynamic {
if(expectNull as{TypeError,ForDynamic} core::bool*) {
if(expectNull as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool) {
expected = null;
}
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
@@ -1,117 +1,90 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Number extends core::Object {
final field core::int* value;
constructor •(core::int* value) → self::Number*
final field core::int value;
constructor •(core::int value) → self::Number
: self::Number::value = value, super core::Object::•()
;
get hashCode() → core::int*
return this.{self::Number::value}{core::int*}.{core::num::hashCode}{core::int*};
operator ==(core::Object* other) → core::bool*
return other is self::Number* && this.{self::Number::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Number*}.{self::Number::value}{core::int*};
method toString() → core::String*
return "Number(${this.{self::Number::value}{core::int*}})";
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
get hashCode() → core::int
return this.{self::Number::value}{core::int}.{core::num::hashCode}{core::int};
operator ==(core::Object other) → core::bool
return other is{ForNonNullableByDefault} self::Number && this.{self::Number::value}{core::int} =={core::num::==}{(core::Object) → core::bool} other{self::Number}.{self::Number::value}{core::int};
method toString() → core::String
return "Number(${this.{self::Number::value}{core::int}})";
}
class Class extends core::Object {
field self::Number* field;
constructor •(self::Number* field) → self::Class*
field self::Number field;
constructor •(self::Number field) → self::Class
: self::Class::field = field, super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class IntClass extends core::Object {
field core::int* field;
constructor •(core::int* field) → self::IntClass*
field core::int field;
constructor •(core::int field) → self::IntClass
: self::IntClass::field = field, super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension NumberExtension on self::Number* {
extension NumberExtension on self::Number {
operator + = self::NumberExtension|+;
operator - = self::NumberExtension|-;
}
extension ClassExtension on self::Class* {
extension ClassExtension on self::Class {
get property = self::ClassExtension|get#property;
method testImplicitProperties = self::ClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::ClassExtension|get#testImplicitProperties;
set property = self::ClassExtension|set#property;
}
extension IntClassExtension on self::IntClass* {
extension IntClassExtension on self::IntClass {
get property = self::IntClassExtension|get#property;
method testImplicitProperties = self::IntClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::IntClassExtension|get#testImplicitProperties;
set property = self::IntClassExtension|set#property;
}
static method NumberExtension|+(lowered final self::Number* #this, core::Object* other) → self::Number* {
if(other is core::int*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{core::int*}){(core::num*) →* core::int*});
static method NumberExtension|+(lowered final self::Number #this, core::Object other) → self::Number {
if(other is{ForNonNullableByDefault} core::int) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{core::int}){(core::num) → core::int});
}
else
if(other is self::Number*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
if(other is{ForNonNullableByDefault} self::Number) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
static method NumberExtension|-(lowered final self::Number* #this, core::Object* other) → self::Number* {
if(other is core::int*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{core::int*}){(core::num*) →* core::int*});
static method NumberExtension|-(lowered final self::Number #this, core::Object other) → self::Number {
if(other is{ForNonNullableByDefault} core::int) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{core::int}){(core::num) → core::int});
}
else
if(other is self::Number*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
if(other is{ForNonNullableByDefault} self::Number) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
static method ClassExtension|get#property(lowered final self::Class* #this) → self::Number*
return #this.{self::Class::field}{self::Number*};
static method ClassExtension|set#property(lowered final self::Class* #this, self::Number* value) → void {
static method ClassExtension|get#property(lowered final self::Class #this) → self::Number
return #this.{self::Class::field}{self::Number};
static method ClassExtension|set#property(lowered final self::Class #this, self::Number value) → void {
#this.{self::Class::field} = value;
}
static method ClassExtension|testImplicitProperties(lowered final self::Class* #this) → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
static method ClassExtension|testImplicitProperties(lowered final self::Class #this) → dynamic {
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::expect(n0, self::ClassExtension|get#property(#this));
self::expect(n1, let final self::Number* #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
self::expect(n2, let final self::Number* #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
self::expect(n0, let final self::Number* #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
self::expect(n1, let final self::Number* #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
self::expect(n0, let final self::Number* #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
self::expect(n1, let final self::Number* #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
self::expect(n0, let final self::Number* #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
self::expect(n0, let final self::Number* #t15 = self::ClassExtension|get#property(#this) in let final self::Number* #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
self::expect(n1, let final self::Number* #t17 = self::ClassExtension|get#property(#this) in let final self::Number* #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
self::expect(n1, let final self::Number #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
self::expect(n2, let final self::Number #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
self::expect(n0, let final self::Number #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
self::expect(n1, let final self::Number #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
self::expect(n0, let final self::Number #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
self::expect(n1, let final self::Number #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
self::expect(n0, let final self::Number #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
self::expect(n0, let final self::Number #t15 = self::ClassExtension|get#property(#this) in let final self::Number #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
self::expect(n1, let final self::Number #t17 = self::ClassExtension|get#property(#this) in let final self::Number #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
self::expect(n0, self::ClassExtension|get#property(#this));
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), n1));
@@ -124,58 +97,58 @@ static method ClassExtension|testImplicitProperties(lowered final self::Class* #
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), n1));
self::expect(n0, self::ClassExtension|get#property(#this));
let final self::Number* #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
let final self::Number #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
self::expect(n1, self::ClassExtension|get#property(#this));
let final self::Number* #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
let final self::Number #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), 1));
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), 1));
self::expect(n0, self::ClassExtension|get#property(#this));
}
static method ClassExtension|get#testImplicitProperties(lowered final self::Class* #this) → () →* dynamic
static method ClassExtension|get#testImplicitProperties(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::ClassExtension|testImplicitProperties(#this);
static method IntClassExtension|get#property(lowered final self::IntClass* #this) → core::int*
return #this.{self::IntClass::field}{core::int*};
static method IntClassExtension|set#property(lowered final self::IntClass* #this, core::int* value) → void {
static method IntClassExtension|get#property(lowered final self::IntClass #this) → core::int
return #this.{self::IntClass::field}{core::int};
static method IntClassExtension|set#property(lowered final self::IntClass #this, core::int value) → void {
#this.{self::IntClass::field} = value;
}
static method IntClassExtension|testImplicitProperties(lowered final self::IntClass* #this) → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
static method IntClassExtension|testImplicitProperties(lowered final self::IntClass #this) → dynamic {
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::expect(n0, self::IntClassExtension|get#property(#this));
self::expect(n1, let final core::int* #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
self::expect(n2, let final core::int* #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
self::expect(n0, let final core::int* #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
self::expect(n1, let final core::int* #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
self::expect(n0, let final core::int* #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
self::expect(n1, let final core::int* #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
self::expect(n0, let final core::int* #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
self::expect(n0, let final core::int* #t37 = self::IntClassExtension|get#property(#this) in let final core::int* #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num*) →* core::int*}) in #t37);
self::expect(n1, let final core::int* #t39 = self::IntClassExtension|get#property(#this) in let final core::int* #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num*) →* core::int*}) in #t39);
self::expect(n1, let final core::int #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
self::expect(n2, let final core::int #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
self::expect(n0, let final core::int #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
self::expect(n1, let final core::int #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
self::expect(n0, let final core::int #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
self::expect(n1, let final core::int #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
self::expect(n0, let final core::int #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
self::expect(n0, let final core::int #t37 = self::IntClassExtension|get#property(#this) in let final core::int #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num) → core::int}) in #t37);
self::expect(n1, let final core::int #t39 = self::IntClassExtension|get#property(#this) in let final core::int #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num) → core::int}) in #t39);
self::expect(n0, self::IntClassExtension|get#property(#this));
self::expect(n0, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
let final core::int* #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
let final core::int #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
self::expect(n1, self::IntClassExtension|get#property(#this));
let final core::int* #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
let final core::int #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
self::expect(n0, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
}
static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass* #this) → () →* dynamic
static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass #this) → () → dynamic
return () → dynamic => self::IntClassExtension|testImplicitProperties(#this);
static method main() → dynamic {
self::testLocals();
@@ -191,10 +164,10 @@ static method main() → dynamic {
self::IntClassExtension|testImplicitProperties(new self::IntClass::•(0));
}
static method testLocals() → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::Number* v = n0;
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::Number v = n0;
self::expect(n0, v);
self::expect(n1, v = self::NumberExtension|+(v, n1));
self::expect(n2, v = self::NumberExtension|+(v, n1));
@@ -203,8 +176,8 @@ static method testLocals() → dynamic {
self::expect(n0, v = self::NumberExtension|-(v, n1));
self::expect(n1, v = self::NumberExtension|+(v, 1));
self::expect(n0, v = self::NumberExtension|-(v, 1));
self::expect(n0, let final self::Number* #t45 = v in let final self::Number* #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
self::expect(n1, let final self::Number* #t47 = v in let final self::Number* #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
self::expect(n0, let final self::Number #t45 = v in let final self::Number #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
self::expect(n1, let final self::Number #t47 = v in let final self::Number #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
self::expect(n0, v);
self::expect(n0, v);
v = self::NumberExtension|+(v, n1);
@@ -227,284 +200,284 @@ static method testLocals() → dynamic {
self::expect(n0, v);
}
static method testProperties() → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::Class* v = new self::Class::•(n0);
self::expect(n0, v.{self::Class::field}{self::Number*});
self::expect(n1, let final self::Class* #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number*}, n1));
self::expect(n2, let final self::Class* #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number*}, n1));
self::expect(n0, let final self::Class* #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number*}, n2));
self::expect(n1, let final self::Class* #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number*}, n1));
self::expect(n0, let final self::Class* #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number*}, n1));
self::expect(n1, let final self::Class* #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number*}, 1));
self::expect(n0, let final self::Class* #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number*}, 1));
self::expect(n0, let final self::Class* #t56 = v in let final self::Number* #t57 = #t56.{self::Class::field}{self::Number*} in let final self::Number* #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
self::expect(n1, let final self::Class* #t59 = v in let final self::Number* #t60 = #t59.{self::Class::field}{self::Number*} in let final self::Number* #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
self::expect(n0, v.{self::Class::field}{self::Number*});
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number*}, n1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number*}, n1);
self::expect(n2, v.{self::Class::field}{self::Number*});
let final self::Class* #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number*}, n2);
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number*}, n1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number*}, n1);
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number*}, 1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number*}, 1);
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number*}, 1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number*}, 1);
self::expect(n0, v.{self::Class::field}{self::Number*});
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::Class v = new self::Class::•(n0);
self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n1, let final self::Class #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number}, n1));
self::expect(n2, let final self::Class #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number}, n1));
self::expect(n0, let final self::Class #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number}, n2));
self::expect(n1, let final self::Class #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number}, n1));
self::expect(n0, let final self::Class #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number}, n1));
self::expect(n1, let final self::Class #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number}, 1));
self::expect(n0, let final self::Class #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number}, 1));
self::expect(n0, let final self::Class #t56 = v in let final self::Number #t57 = #t56.{self::Class::field}{self::Number} in let final self::Number #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
self::expect(n1, let final self::Class #t59 = v in let final self::Number #t60 = #t59.{self::Class::field}{self::Number} in let final self::Number #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number}, n1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number}, n1);
self::expect(n2, v.{self::Class::field}{self::Number});
let final self::Class #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number}, n2);
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number}, n1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number}, n1);
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number}, 1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number}, 1);
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number}, 1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number}, 1);
self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n1, let final self::Class* #t71 = v in let final self::Number* #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
self::expect(n2, let final self::Class* #t74 = v in let final self::Number* #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
self::expect(n0, let final self::Class* #t77 = v in let final self::Number* #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
self::expect(n1, let final self::Class* #t80 = v in let final self::Number* #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
self::expect(n0, let final self::Class* #t83 = v in let final self::Number* #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
self::expect(n1, let final self::Class* #t86 = v in let final self::Number* #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
self::expect(n0, let final self::Class* #t89 = v in let final self::Number* #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
self::expect(n0, let final self::Class* #t92 = v in let final self::Number* #t93 = self::ClassExtension|get#property(#t92) in let final self::Number* #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
self::expect(n1, let final self::Class* #t95 = v in let final self::Number* #t96 = self::ClassExtension|get#property(#t95) in let final self::Number* #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
self::expect(n1, let final self::Class #t71 = v in let final self::Number #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
self::expect(n2, let final self::Class #t74 = v in let final self::Number #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
self::expect(n0, let final self::Class #t77 = v in let final self::Number #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
self::expect(n1, let final self::Class #t80 = v in let final self::Number #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
self::expect(n0, let final self::Class #t83 = v in let final self::Number #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
self::expect(n1, let final self::Class #t86 = v in let final self::Number #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
self::expect(n0, let final self::Class #t89 = v in let final self::Number #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
self::expect(n0, let final self::Class #t92 = v in let final self::Number #t93 = self::ClassExtension|get#property(#t92) in let final self::Number #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
self::expect(n1, let final self::Class #t95 = v in let final self::Number #t96 = self::ClassExtension|get#property(#t95) in let final self::Number #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
let final self::Class #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
let final self::Class #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
self::expect(n2, self::ClassExtension|get#property(v));
let final self::Class* #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
let final self::Class #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
let final self::Class #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
let final self::Class #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t103 = v in let final self::Number* #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
let final self::Class #t103 = v in let final self::Number #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t106 = v in let final self::Number* #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
let final self::Class #t106 = v in let final self::Number #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
let final self::Class #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
let final self::Class #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testIntProperties() → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
self::IntClass* v = new self::IntClass::•(n0);
self::expect(n0, v.{self::IntClass::field}{core::int*});
self::expect(n1, let final self::IntClass* #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n2, let final self::IntClass* #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t118 = v in let final core::int* #t119 = #t118.{self::IntClass::field}{core::int*} in let final core::int* #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num*) →* core::int*} in #t119);
self::expect(n1, let final self::IntClass* #t121 = v in let final core::int* #t122 = #t121.{self::IntClass::field}{core::int*} in let final core::int* #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num*) →* core::int*} in #t122);
self::expect(n0, v.{self::IntClass::field}{core::int*});
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
self::expect(n2, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::IntClass v = new self::IntClass::•(n0);
self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n1, let final self::IntClass #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, let final self::IntClass #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int});
self::expect(n1, let final self::IntClass #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int});
self::expect(n1, let final self::IntClass #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t118 = v in let final core::int #t119 = #t118.{self::IntClass::field}{core::int} in let final core::int #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num) → core::int} in #t119);
self::expect(n1, let final self::IntClass #t121 = v in let final core::int #t122 = #t121.{self::IntClass::field}{core::int} in let final core::int #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num) → core::int} in #t122);
self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
self::expect(n2, v.{self::IntClass::field}{core::int});
let final self::IntClass #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n1, let final self::IntClass* #t133 = v in let final core::int* #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
self::expect(n2, let final self::IntClass* #t136 = v in let final core::int* #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
self::expect(n0, let final self::IntClass* #t139 = v in let final core::int* #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
self::expect(n1, let final self::IntClass* #t142 = v in let final core::int* #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
self::expect(n0, let final self::IntClass* #t145 = v in let final core::int* #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
self::expect(n1, let final self::IntClass* #t148 = v in let final core::int* #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
self::expect(n0, let final self::IntClass* #t151 = v in let final core::int* #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
self::expect(n0, let final self::IntClass* #t154 = v in let final core::int* #t155 = self::IntClassExtension|get#property(#t154) in let final core::int* #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num*) →* core::int*}) in #t155);
self::expect(n1, let final self::IntClass* #t157 = v in let final core::int* #t158 = self::IntClassExtension|get#property(#t157) in let final core::int* #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num*) →* core::int*}) in #t158);
self::expect(n1, let final self::IntClass #t133 = v in let final core::int #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num) → core::int} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
self::expect(n2, let final self::IntClass #t136 = v in let final core::int #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num) → core::int} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
self::expect(n0, let final self::IntClass #t139 = v in let final core::int #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num) → core::int} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
self::expect(n1, let final self::IntClass #t142 = v in let final core::int #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num) → core::int} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
self::expect(n0, let final self::IntClass #t145 = v in let final core::int #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num) → core::int} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
self::expect(n1, let final self::IntClass #t148 = v in let final core::int #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num) → core::int} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
self::expect(n0, let final self::IntClass #t151 = v in let final core::int #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num) → core::int} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
self::expect(n0, let final self::IntClass #t154 = v in let final core::int #t155 = self::IntClassExtension|get#property(#t154) in let final core::int #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num) → core::int}) in #t155);
self::expect(n1, let final self::IntClass #t157 = v in let final core::int #t158 = self::IntClassExtension|get#property(#t157) in let final core::int #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num) → core::int}) in #t158);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
let final self::IntClass* #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num*) →* core::int*});
let final self::IntClass #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num*) →* core::int*});
let final self::IntClass #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t165 = v in let final core::int* #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
let final self::IntClass #t165 = v in let final core::int #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num) → core::int} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t168 = v in let final core::int* #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
let final self::IntClass #t168 = v in let final core::int #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num) → core::int} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num*) →* core::int*});
let final self::IntClass #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num*) →* core::int*});
let final self::IntClass #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
static method testExplicitProperties() → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::Class* v = new self::Class::•(n0);
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::Class v = new self::Class::•(n0);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n1, let final self::Class* #t173 = v in let final self::Number* #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
self::expect(n2, let final self::Class* #t176 = v in let final self::Number* #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
self::expect(n0, let final self::Class* #t179 = v in let final self::Number* #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
self::expect(n1, let final self::Class* #t182 = v in let final self::Number* #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
self::expect(n0, let final self::Class* #t185 = v in let final self::Number* #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
self::expect(n1, let final self::Class* #t188 = v in let final self::Number* #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
self::expect(n0, let final self::Class* #t191 = v in let final self::Number* #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
self::expect(n0, let final self::Class* #t194 = v in let final self::Number* #t195 = self::ClassExtension|get#property(#t194) in let final self::Number* #t196 = let final self::Number* #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
self::expect(n1, let final self::Class* #t199 = v in let final self::Number* #t200 = self::ClassExtension|get#property(#t199) in let final self::Number* #t201 = let final self::Number* #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
self::expect(n1, let final self::Class #t173 = v in let final self::Number #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
self::expect(n2, let final self::Class #t176 = v in let final self::Number #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
self::expect(n0, let final self::Class #t179 = v in let final self::Number #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
self::expect(n1, let final self::Class #t182 = v in let final self::Number #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
self::expect(n0, let final self::Class #t185 = v in let final self::Number #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
self::expect(n1, let final self::Class #t188 = v in let final self::Number #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
self::expect(n0, let final self::Class #t191 = v in let final self::Number #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
self::expect(n0, let final self::Class #t194 = v in let final self::Number #t195 = self::ClassExtension|get#property(#t194) in let final self::Number #t196 = let final self::Number #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
self::expect(n1, let final self::Class #t199 = v in let final self::Number #t200 = self::ClassExtension|get#property(#t199) in let final self::Number #t201 = let final self::Number #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
let final self::Class #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
let final self::Class #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
self::expect(n2, self::ClassExtension|get#property(v));
let final self::Class* #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
let final self::Class #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
let final self::Class #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
let final self::Class #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t209 = v in let final self::Number* #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
let final self::Class #t209 = v in let final self::Number #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t212 = v in let final self::Number* #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
let final self::Class #t212 = v in let final self::Number #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
let final self::Class #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
let final self::Class #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testExplicitIntProperties() → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
self::IntClass* v = new self::IntClass::•(n0);
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::IntClass v = new self::IntClass::•(n0);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n1, let final self::IntClass* #t217 = v in let final core::int* #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
self::expect(n2, let final self::IntClass* #t220 = v in let final core::int* #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
self::expect(n0, let final self::IntClass* #t223 = v in let final core::int* #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
self::expect(n1, let final self::IntClass* #t226 = v in let final core::int* #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
self::expect(n0, let final self::IntClass* #t229 = v in let final core::int* #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
self::expect(n1, let final self::IntClass* #t232 = v in let final core::int* #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
self::expect(n0, let final self::IntClass* #t235 = v in let final core::int* #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
self::expect(n0, let final self::IntClass* #t238 = v in let final core::int* #t239 = self::IntClassExtension|get#property(#t238) in let final core::int* #t240 = let final core::int* #t241 = #t239.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
self::expect(n1, let final self::IntClass* #t243 = v in let final core::int* #t244 = self::IntClassExtension|get#property(#t243) in let final core::int* #t245 = let final core::int* #t246 = #t244.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
self::expect(n1, let final self::IntClass #t217 = v in let final core::int #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num) → core::int} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
self::expect(n2, let final self::IntClass #t220 = v in let final core::int #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num) → core::int} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
self::expect(n0, let final self::IntClass #t223 = v in let final core::int #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num) → core::int} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
self::expect(n1, let final self::IntClass #t226 = v in let final core::int #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num) → core::int} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
self::expect(n0, let final self::IntClass #t229 = v in let final core::int #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num) → core::int} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
self::expect(n1, let final self::IntClass #t232 = v in let final core::int #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num) → core::int} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
self::expect(n0, let final self::IntClass #t235 = v in let final core::int #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num) → core::int} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
self::expect(n0, let final self::IntClass #t238 = v in let final core::int #t239 = self::IntClassExtension|get#property(#t238) in let final core::int #t240 = let final core::int #t241 = #t239.{core::num::+}(1){(core::num) → core::int} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
self::expect(n1, let final self::IntClass #t243 = v in let final core::int #t244 = self::IntClassExtension|get#property(#t243) in let final core::int #t245 = let final core::int #t246 = #t244.{core::num::-}(1){(core::num) → core::int} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
let final self::IntClass* #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num*) →* core::int*});
let final self::IntClass #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num*) →* core::int*});
let final self::IntClass #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t253 = v in let final core::int* #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
let final self::IntClass #t253 = v in let final core::int #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num) → core::int} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t256 = v in let final core::int* #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
let final self::IntClass #t256 = v in let final core::int #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num) → core::int} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num*) →* core::int*});
let final self::IntClass #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num*) →* core::int*});
let final self::IntClass #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
static method testExplicitNullAwareProperties(self::Class* v) → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::expect(n0, let final self::Class* #t261 = v in #t261 == null ?{self::Number*} null : self::ClassExtension|get#property(#t261), v == null);
self::expect(n1, let final self::Class* #t262 = v in #t262 == null ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v == null);
self::expect(n2, let final self::Class* #t265 = v in #t265 == null ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v == null);
self::expect(n0, let final self::Class* #t268 = v in #t268 == null ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v == null);
self::expect(n1, let final self::Class* #t271 = v in #t271 == null ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v == null);
self::expect(n0, let final self::Class* #t274 = v in #t274 == null ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v == null);
self::expect(n1, let final self::Class* #t277 = v in #t277 == null ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v == null);
self::expect(n0, let final self::Class* #t280 = v in #t280 == null ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v == null);
self::expect(n0, let final self::Class* #t283 = v in #t283 == null ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v == null);
self::expect(n1, let final self::Class* #t288 = v in #t288 == null ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v == null);
self::expect(n0, let final self::Class* #t293 = v in #t293 == null ?{self::Number*} null : self::ClassExtension|get#property(#t293), v == null);
self::expect(n0, let final self::Class* #t294 = v in #t294 == null ?{self::Number*} null : self::ClassExtension|get#property(#t294), v == null);
let final self::Class* #t295 = v in #t295 == null ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
self::expect(n1, let final self::Class* #t296 = v in #t296 == null ?{self::Number*} null : self::ClassExtension|get#property(#t296), v == null);
let final self::Class* #t297 = v in #t297 == null ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
self::expect(n2, let final self::Class* #t298 = v in #t298 == null ?{self::Number*} null : self::ClassExtension|get#property(#t298), v == null);
let final self::Class* #t299 = v in #t299 == null ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
self::expect(n0, let final self::Class* #t300 = v in #t300 == null ?{self::Number*} null : self::ClassExtension|get#property(#t300), v == null);
let final self::Class* #t301 = v in #t301 == null ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
self::expect(n1, let final self::Class* #t302 = v in #t302 == null ?{self::Number*} null : self::ClassExtension|get#property(#t302), v == null);
let final self::Class* #t303 = v in #t303 == null ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
self::expect(n0, let final self::Class* #t304 = v in #t304 == null ?{self::Number*} null : self::ClassExtension|get#property(#t304), v == null);
let final self::Class* #t305 = v in #t305 == null ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
self::expect(n1, let final self::Class* #t308 = v in #t308 == null ?{self::Number*} null : self::ClassExtension|get#property(#t308), v == null);
let final self::Class* #t309 = v in #t309 == null ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
self::expect(n0, let final self::Class* #t312 = v in #t312 == null ?{self::Number*} null : self::ClassExtension|get#property(#t312), v == null);
let final self::Class* #t313 = v in #t313 == null ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
self::expect(n1, let final self::Class* #t314 = v in #t314 == null ?{self::Number*} null : self::ClassExtension|get#property(#t314), v == null);
let final self::Class* #t315 = v in #t315 == null ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
self::expect(n0, let final self::Class* #t316 = v in #t316 == null ?{self::Number*} null : self::ClassExtension|get#property(#t316), v == null);
static method testExplicitNullAwareProperties(self::Class? v) → dynamic {
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::expect(n0, let final self::Class? #t261 = v in #t261 == null ?{self::Number?} null : self::ClassExtension|get#property(#t261{self::Class}), v == null);
self::expect(n1, let final self::Class? #t262 = v in #t262 == null ?{self::Number?} null : let final self::Number #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262{self::Class}), n1) in let final void #t264 = self::ClassExtension|set#property(#t262{self::Class}, #t263) in #t263, v == null);
self::expect(n2, let final self::Class? #t265 = v in #t265 == null ?{self::Number?} null : let final self::Number #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265{self::Class}), n1) in let final void #t267 = self::ClassExtension|set#property(#t265{self::Class}, #t266) in #t266, v == null);
self::expect(n0, let final self::Class? #t268 = v in #t268 == null ?{self::Number?} null : let final self::Number #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268{self::Class}), n2) in let final void #t270 = self::ClassExtension|set#property(#t268{self::Class}, #t269) in #t269, v == null);
self::expect(n1, let final self::Class? #t271 = v in #t271 == null ?{self::Number?} null : let final self::Number #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271{self::Class}), n1) in let final void #t273 = self::ClassExtension|set#property(#t271{self::Class}, #t272) in #t272, v == null);
self::expect(n0, let final self::Class? #t274 = v in #t274 == null ?{self::Number?} null : let final self::Number #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274{self::Class}), n1) in let final void #t276 = self::ClassExtension|set#property(#t274{self::Class}, #t275) in #t275, v == null);
self::expect(n1, let final self::Class? #t277 = v in #t277 == null ?{self::Number?} null : let final self::Number #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277{self::Class}), 1) in let final void #t279 = self::ClassExtension|set#property(#t277{self::Class}, #t278) in #t278, v == null);
self::expect(n0, let final self::Class? #t280 = v in #t280 == null ?{self::Number?} null : let final self::Number #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280{self::Class}), 1) in let final void #t282 = self::ClassExtension|set#property(#t280{self::Class}, #t281) in #t281, v == null);
self::expect(n0, let final self::Class? #t283 = v in #t283 == null ?{self::Number?} null : let final self::Number #t284 = self::ClassExtension|get#property(#t283{self::Class}) in let final self::Number #t285 = let final self::Number #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283{self::Class}, #t286) in #t286 in #t284, v == null);
self::expect(n1, let final self::Class? #t288 = v in #t288 == null ?{self::Number?} null : let final self::Number #t289 = self::ClassExtension|get#property(#t288{self::Class}) in let final self::Number #t290 = let final self::Number #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288{self::Class}, #t291) in #t291 in #t289, v == null);
self::expect(n0, let final self::Class? #t293 = v in #t293 == null ?{self::Number?} null : self::ClassExtension|get#property(#t293{self::Class}), v == null);
self::expect(n0, let final self::Class? #t294 = v in #t294 == null ?{self::Number?} null : self::ClassExtension|get#property(#t294{self::Class}), v == null);
let final self::Class? #t295 = v in #t295 == null ?{self::Number?} null : self::ClassExtension|set#property(#t295{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t295{self::Class}), n1));
self::expect(n1, let final self::Class? #t296 = v in #t296 == null ?{self::Number?} null : self::ClassExtension|get#property(#t296{self::Class}), v == null);
let final self::Class? #t297 = v in #t297 == null ?{self::Number?} null : self::ClassExtension|set#property(#t297{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t297{self::Class}), n1));
self::expect(n2, let final self::Class? #t298 = v in #t298 == null ?{self::Number?} null : self::ClassExtension|get#property(#t298{self::Class}), v == null);
let final self::Class? #t299 = v in #t299 == null ?{self::Number?} null : self::ClassExtension|set#property(#t299{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t299{self::Class}), n2));
self::expect(n0, let final self::Class? #t300 = v in #t300 == null ?{self::Number?} null : self::ClassExtension|get#property(#t300{self::Class}), v == null);
let final self::Class? #t301 = v in #t301 == null ?{self::Number?} null : self::ClassExtension|set#property(#t301{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t301{self::Class}), n1));
self::expect(n1, let final self::Class? #t302 = v in #t302 == null ?{self::Number?} null : self::ClassExtension|get#property(#t302{self::Class}), v == null);
let final self::Class? #t303 = v in #t303 == null ?{self::Number?} null : self::ClassExtension|set#property(#t303{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t303{self::Class}), n1));
self::expect(n0, let final self::Class? #t304 = v in #t304 == null ?{self::Number?} null : self::ClassExtension|get#property(#t304{self::Class}), v == null);
let final self::Class? #t305 = v in #t305 == null ?{self::Number?} null : let final self::Number #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305{self::Class}), 1) in let final void #t307 = self::ClassExtension|set#property(#t305{self::Class}, #t306) in #t306;
self::expect(n1, let final self::Class? #t308 = v in #t308 == null ?{self::Number?} null : self::ClassExtension|get#property(#t308{self::Class}), v == null);
let final self::Class? #t309 = v in #t309 == null ?{self::Number?} null : let final self::Number #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309{self::Class}), 1) in let final void #t311 = self::ClassExtension|set#property(#t309{self::Class}, #t310) in #t310;
self::expect(n0, let final self::Class? #t312 = v in #t312 == null ?{self::Number?} null : self::ClassExtension|get#property(#t312{self::Class}), v == null);
let final self::Class? #t313 = v in #t313 == null ?{self::Number?} null : self::ClassExtension|set#property(#t313{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t313{self::Class}), 1));
self::expect(n1, let final self::Class? #t314 = v in #t314 == null ?{self::Number?} null : self::ClassExtension|get#property(#t314{self::Class}), v == null);
let final self::Class? #t315 = v in #t315 == null ?{self::Number?} null : self::ClassExtension|set#property(#t315{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t315{self::Class}), 1));
self::expect(n0, let final self::Class? #t316 = v in #t316 == null ?{self::Number?} null : self::ClassExtension|get#property(#t316{self::Class}), v == null);
}
static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
self::expect(n0, let final self::IntClass* #t317 = v in #t317 == null ?{core::int*} null : self::IntClassExtension|get#property(#t317), v == null);
self::expect(n1, let final self::IntClass* #t318 = v in #t318 == null ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v == null);
self::expect(n2, let final self::IntClass* #t321 = v in #t321 == null ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v == null);
self::expect(n0, let final self::IntClass* #t324 = v in #t324 == null ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v == null);
self::expect(n1, let final self::IntClass* #t327 = v in #t327 == null ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v == null);
self::expect(n0, let final self::IntClass* #t330 = v in #t330 == null ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v == null);
self::expect(n1, let final self::IntClass* #t333 = v in #t333 == null ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v == null);
self::expect(n0, let final self::IntClass* #t336 = v in #t336 == null ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v == null);
self::expect(n0, let final self::IntClass* #t339 = v in #t339 == null ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v == null);
self::expect(n1, let final self::IntClass* #t344 = v in #t344 == null ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v == null);
self::expect(n0, let final self::IntClass* #t349 = v in #t349 == null ?{core::int*} null : self::IntClassExtension|get#property(#t349), v == null);
self::expect(n0, let final self::IntClass* #t350 = v in #t350 == null ?{core::int*} null : self::IntClassExtension|get#property(#t350), v == null);
let final self::IntClass* #t351 = v in #t351 == null ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t352 = v in #t352 == null ?{core::int*} null : self::IntClassExtension|get#property(#t352), v == null);
let final self::IntClass* #t353 = v in #t353 == null ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n2, let final self::IntClass* #t354 = v in #t354 == null ?{core::int*} null : self::IntClassExtension|get#property(#t354), v == null);
let final self::IntClass* #t355 = v in #t355 == null ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t356 = v in #t356 == null ?{core::int*} null : self::IntClassExtension|get#property(#t356), v == null);
let final self::IntClass* #t357 = v in #t357 == null ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t358 = v in #t358 == null ?{core::int*} null : self::IntClassExtension|get#property(#t358), v == null);
let final self::IntClass* #t359 = v in #t359 == null ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t360 = v in #t360 == null ?{core::int*} null : self::IntClassExtension|get#property(#t360), v == null);
let final self::IntClass* #t361 = v in #t361 == null ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
self::expect(n1, let final self::IntClass* #t364 = v in #t364 == null ?{core::int*} null : self::IntClassExtension|get#property(#t364), v == null);
let final self::IntClass* #t365 = v in #t365 == null ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
self::expect(n0, let final self::IntClass* #t368 = v in #t368 == null ?{core::int*} null : self::IntClassExtension|get#property(#t368), v == null);
let final self::IntClass* #t369 = v in #t369 == null ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t370 = v in #t370 == null ?{core::int*} null : self::IntClassExtension|get#property(#t370), v == null);
let final self::IntClass* #t371 = v in #t371 == null ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t372 = v in #t372 == null ?{core::int*} null : self::IntClassExtension|get#property(#t372), v == null);
static method testExplicitNullAwareIntProperties(self::IntClass? v) → dynamic {
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::expect(n0, let final self::IntClass? #t317 = v in #t317 == null ?{core::int?} null : self::IntClassExtension|get#property(#t317{self::IntClass}), v == null);
self::expect(n1, let final self::IntClass? #t318 = v in #t318 == null ?{core::int?} null : let final core::int #t319 = self::IntClassExtension|get#property(#t318{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t320 = self::IntClassExtension|set#property(#t318{self::IntClass}, #t319) in #t319, v == null);
self::expect(n2, let final self::IntClass? #t321 = v in #t321 == null ?{core::int?} null : let final core::int #t322 = self::IntClassExtension|get#property(#t321{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t323 = self::IntClassExtension|set#property(#t321{self::IntClass}, #t322) in #t322, v == null);
self::expect(n0, let final self::IntClass? #t324 = v in #t324 == null ?{core::int?} null : let final core::int #t325 = self::IntClassExtension|get#property(#t324{self::IntClass}).{core::num::-}(n2){(core::num) → core::int} in let final void #t326 = self::IntClassExtension|set#property(#t324{self::IntClass}, #t325) in #t325, v == null);
self::expect(n1, let final self::IntClass? #t327 = v in #t327 == null ?{core::int?} null : let final core::int #t328 = self::IntClassExtension|get#property(#t327{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t329 = self::IntClassExtension|set#property(#t327{self::IntClass}, #t328) in #t328, v == null);
self::expect(n0, let final self::IntClass? #t330 = v in #t330 == null ?{core::int?} null : let final core::int #t331 = self::IntClassExtension|get#property(#t330{self::IntClass}).{core::num::-}(n1){(core::num) → core::int} in let final void #t332 = self::IntClassExtension|set#property(#t330{self::IntClass}, #t331) in #t331, v == null);
self::expect(n1, let final self::IntClass? #t333 = v in #t333 == null ?{core::int?} null : let final core::int #t334 = self::IntClassExtension|get#property(#t333{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t335 = self::IntClassExtension|set#property(#t333{self::IntClass}, #t334) in #t334, v == null);
self::expect(n0, let final self::IntClass? #t336 = v in #t336 == null ?{core::int?} null : let final core::int #t337 = self::IntClassExtension|get#property(#t336{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t338 = self::IntClassExtension|set#property(#t336{self::IntClass}, #t337) in #t337, v == null);
self::expect(n0, let final self::IntClass? #t339 = v in #t339 == null ?{core::int?} null : let final core::int #t340 = self::IntClassExtension|get#property(#t339{self::IntClass}) in let final core::int #t341 = let final core::int #t342 = #t340.{core::num::+}(1){(core::num) → core::int} in let final void #t343 = self::IntClassExtension|set#property(#t339{self::IntClass}, #t342) in #t342 in #t340, v == null);
self::expect(n1, let final self::IntClass? #t344 = v in #t344 == null ?{core::int?} null : let final core::int #t345 = self::IntClassExtension|get#property(#t344{self::IntClass}) in let final core::int #t346 = let final core::int #t347 = #t345.{core::num::-}(1){(core::num) → core::int} in let final void #t348 = self::IntClassExtension|set#property(#t344{self::IntClass}, #t347) in #t347 in #t345, v == null);
self::expect(n0, let final self::IntClass? #t349 = v in #t349 == null ?{core::int?} null : self::IntClassExtension|get#property(#t349{self::IntClass}), v == null);
self::expect(n0, let final self::IntClass? #t350 = v in #t350 == null ?{core::int?} null : self::IntClassExtension|get#property(#t350{self::IntClass}), v == null);
let final self::IntClass? #t351 = v in #t351 == null ?{core::int?} null : self::IntClassExtension|set#property(#t351{self::IntClass}, self::IntClassExtension|get#property(#t351{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, let final self::IntClass? #t352 = v in #t352 == null ?{core::int?} null : self::IntClassExtension|get#property(#t352{self::IntClass}), v == null);
let final self::IntClass? #t353 = v in #t353 == null ?{core::int?} null : self::IntClassExtension|set#property(#t353{self::IntClass}, self::IntClassExtension|get#property(#t353{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, let final self::IntClass? #t354 = v in #t354 == null ?{core::int?} null : self::IntClassExtension|get#property(#t354{self::IntClass}), v == null);
let final self::IntClass? #t355 = v in #t355 == null ?{core::int?} null : self::IntClassExtension|set#property(#t355{self::IntClass}, self::IntClassExtension|get#property(#t355{self::IntClass}).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, let final self::IntClass? #t356 = v in #t356 == null ?{core::int?} null : self::IntClassExtension|get#property(#t356{self::IntClass}), v == null);
let final self::IntClass? #t357 = v in #t357 == null ?{core::int?} null : self::IntClassExtension|set#property(#t357{self::IntClass}, self::IntClassExtension|get#property(#t357{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, let final self::IntClass? #t358 = v in #t358 == null ?{core::int?} null : self::IntClassExtension|get#property(#t358{self::IntClass}), v == null);
let final self::IntClass? #t359 = v in #t359 == null ?{core::int?} null : self::IntClassExtension|set#property(#t359{self::IntClass}, self::IntClassExtension|get#property(#t359{self::IntClass}).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, let final self::IntClass? #t360 = v in #t360 == null ?{core::int?} null : self::IntClassExtension|get#property(#t360{self::IntClass}), v == null);
let final self::IntClass? #t361 = v in #t361 == null ?{core::int?} null : let final core::int #t362 = self::IntClassExtension|get#property(#t361{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t363 = self::IntClassExtension|set#property(#t361{self::IntClass}, #t362) in #t362;
self::expect(n1, let final self::IntClass? #t364 = v in #t364 == null ?{core::int?} null : self::IntClassExtension|get#property(#t364{self::IntClass}), v == null);
let final self::IntClass? #t365 = v in #t365 == null ?{core::int?} null : let final core::int #t366 = self::IntClassExtension|get#property(#t365{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t367 = self::IntClassExtension|set#property(#t365{self::IntClass}, #t366) in #t366;
self::expect(n0, let final self::IntClass? #t368 = v in #t368 == null ?{core::int?} null : self::IntClassExtension|get#property(#t368{self::IntClass}), v == null);
let final self::IntClass? #t369 = v in #t369 == null ?{core::int?} null : self::IntClassExtension|set#property(#t369{self::IntClass}, self::IntClassExtension|get#property(#t369{self::IntClass}).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, let final self::IntClass? #t370 = v in #t370 == null ?{core::int?} null : self::IntClassExtension|get#property(#t370{self::IntClass}), v == null);
let final self::IntClass? #t371 = v in #t371 == null ?{core::int?} null : self::IntClassExtension|set#property(#t371{self::IntClass}, self::IntClassExtension|get#property(#t371{self::IntClass}).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, let final self::IntClass? #t372 = v in #t372 == null ?{core::int?} null : self::IntClassExtension|get#property(#t372{self::IntClass}), v == null);
}
static method expect(dynamic expected, dynamic actual, [dynamic expectNull = #C1]) → dynamic {
if(expectNull as{TypeError,ForDynamic} core::bool*) {
if(expectNull as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool) {
expected = null;
}
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
@@ -1,90 +1,63 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Number extends core::Object {
final field core::int* value;
constructor •(core::int* value) → self::Number*
final field core::int value;
constructor •(core::int value) → self::Number
;
get hashCode() → core::int*
get hashCode() → core::int
;
operator ==(core::Object* other) → core::bool*
operator ==(core::Object other) → core::bool
;
method toString() → core::String*
method toString() → core::String
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class extends core::Object {
field self::Number* field;
constructor •(self::Number* field) → self::Class*
field self::Number field;
constructor •(self::Number field) → self::Class
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class IntClass extends core::Object {
field core::int* field;
constructor •(core::int* field) → self::IntClass*
field core::int field;
constructor •(core::int field) → self::IntClass
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension NumberExtension on self::Number* {
extension NumberExtension on self::Number {
operator + = self::NumberExtension|+;
operator - = self::NumberExtension|-;
}
extension ClassExtension on self::Class* {
extension ClassExtension on self::Class {
get property = self::ClassExtension|get#property;
method testImplicitProperties = self::ClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::ClassExtension|get#testImplicitProperties;
set property = self::ClassExtension|set#property;
}
extension IntClassExtension on self::IntClass* {
extension IntClassExtension on self::IntClass {
get property = self::IntClassExtension|get#property;
method testImplicitProperties = self::IntClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::IntClassExtension|get#testImplicitProperties;
set property = self::IntClassExtension|set#property;
}
static method NumberExtension|+(lowered final self::Number* #this, core::Object* other) → self::Number*
static method NumberExtension|+(lowered final self::Number #this, core::Object other) → self::Number
;
static method NumberExtension|-(lowered final self::Number* #this, core::Object* other) → self::Number*
static method NumberExtension|-(lowered final self::Number #this, core::Object other) → self::Number
;
static method ClassExtension|get#property(lowered final self::Class* #this) → self::Number*
static method ClassExtension|get#property(lowered final self::Class #this) → self::Number
;
static method ClassExtension|set#property(lowered final self::Class* #this, self::Number* value) → void
static method ClassExtension|set#property(lowered final self::Class #this, self::Number value) → void
;
static method ClassExtension|testImplicitProperties(lowered final self::Class* #this) → dynamic
static method ClassExtension|testImplicitProperties(lowered final self::Class #this) → dynamic
;
static method ClassExtension|get#testImplicitProperties(lowered final self::Class* #this) → () →* dynamic
static method ClassExtension|get#testImplicitProperties(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::ClassExtension|testImplicitProperties(#this);
static method IntClassExtension|get#property(lowered final self::IntClass* #this) → core::int*
static method IntClassExtension|get#property(lowered final self::IntClass #this) → core::int
;
static method IntClassExtension|set#property(lowered final self::IntClass* #this, core::int* value) → void
static method IntClassExtension|set#property(lowered final self::IntClass #this, core::int value) → void
;
static method IntClassExtension|testImplicitProperties(lowered final self::IntClass* #this) → dynamic
static method IntClassExtension|testImplicitProperties(lowered final self::IntClass #this) → dynamic
;
static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass* #this) → () →* dynamic
static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass #this) → () → dynamic
return () → dynamic => self::IntClassExtension|testImplicitProperties(#this);
static method main() → dynamic
;
@@ -98,9 +71,9 @@ static method testExplicitProperties() → dynamic
;
static method testExplicitIntProperties() → dynamic
;
static method testExplicitNullAwareProperties(self::Class* v) → dynamic
static method testExplicitNullAwareProperties(self::Class? v) → dynamic
;
static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic
static method testExplicitNullAwareIntProperties(self::IntClass? v) → dynamic
;
static method expect(dynamic expected, dynamic actual, [has-declared-initializer dynamic expectNull]) → dynamic
;
@@ -1,117 +1,90 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Number extends core::Object {
final field core::int* value;
constructor •(core::int* value) → self::Number*
final field core::int value;
constructor •(core::int value) → self::Number
: self::Number::value = value, super core::Object::•()
;
get hashCode() → core::int*
return this.{self::Number::value}{core::int*}.{core::num::hashCode}{core::int*};
operator ==(core::Object* other) → core::bool*
return other is self::Number* && this.{self::Number::value}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} other{self::Number*}.{self::Number::value}{core::int*};
method toString() → core::String*
return "Number(${this.{self::Number::value}{core::int*}})";
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
get hashCode() → core::int
return this.{self::Number::value}{core::int}.{core::num::hashCode}{core::int};
operator ==(core::Object other) → core::bool
return other is{ForNonNullableByDefault} self::Number && this.{self::Number::value}{core::int} =={core::num::==}{(core::Object) → core::bool} other{self::Number}.{self::Number::value}{core::int};
method toString() → core::String
return "Number(${this.{self::Number::value}{core::int}})";
}
class Class extends core::Object {
field self::Number* field;
constructor •(self::Number* field) → self::Class*
field self::Number field;
constructor •(self::Number field) → self::Class
: self::Class::field = field, super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class IntClass extends core::Object {
field core::int* field;
constructor •(core::int* field) → self::IntClass*
field core::int field;
constructor •(core::int field) → self::IntClass
: self::IntClass::field = field, super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension NumberExtension on self::Number* {
extension NumberExtension on self::Number {
operator + = self::NumberExtension|+;
operator - = self::NumberExtension|-;
}
extension ClassExtension on self::Class* {
extension ClassExtension on self::Class {
get property = self::ClassExtension|get#property;
method testImplicitProperties = self::ClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::ClassExtension|get#testImplicitProperties;
set property = self::ClassExtension|set#property;
}
extension IntClassExtension on self::IntClass* {
extension IntClassExtension on self::IntClass {
get property = self::IntClassExtension|get#property;
method testImplicitProperties = self::IntClassExtension|testImplicitProperties;
tearoff testImplicitProperties = self::IntClassExtension|get#testImplicitProperties;
set property = self::IntClassExtension|set#property;
}
static method NumberExtension|+(lowered final self::Number* #this, core::Object* other) → self::Number* {
if(other is core::int*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{core::int*}){(core::num*) →* core::int*});
static method NumberExtension|+(lowered final self::Number #this, core::Object other) → self::Number {
if(other is{ForNonNullableByDefault} core::int) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{core::int}){(core::num) → core::int});
}
else
if(other is self::Number*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::+}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
if(other is{ForNonNullableByDefault} self::Number) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::+}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
static method NumberExtension|-(lowered final self::Number* #this, core::Object* other) → self::Number* {
if(other is core::int*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{core::int*}){(core::num*) →* core::int*});
static method NumberExtension|-(lowered final self::Number #this, core::Object other) → self::Number {
if(other is{ForNonNullableByDefault} core::int) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{core::int}){(core::num) → core::int});
}
else
if(other is self::Number*) {
return new self::Number::•(#this.{self::Number::value}{core::int*}.{core::num::-}(other{self::Number*}.{self::Number::value}{core::int*}){(core::num*) →* core::int*});
if(other is{ForNonNullableByDefault} self::Number) {
return new self::Number::•(#this.{self::Number::value}{core::int}.{core::num::-}(other{self::Number}.{self::Number::value}{core::int}){(core::num) → core::int});
}
else {
throw new core::ArgumentError::•("${other}");
}
}
static method ClassExtension|get#property(lowered final self::Class* #this) → self::Number*
return #this.{self::Class::field}{self::Number*};
static method ClassExtension|set#property(lowered final self::Class* #this, self::Number* value) → void {
static method ClassExtension|get#property(lowered final self::Class #this) → self::Number
return #this.{self::Class::field}{self::Number};
static method ClassExtension|set#property(lowered final self::Class #this, self::Number value) → void {
#this.{self::Class::field} = value;
}
static method ClassExtension|testImplicitProperties(lowered final self::Class* #this) → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
static method ClassExtension|testImplicitProperties(lowered final self::Class #this) → dynamic {
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::expect(n0, self::ClassExtension|get#property(#this));
self::expect(n1, let final self::Number* #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
self::expect(n2, let final self::Number* #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
self::expect(n0, let final self::Number* #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
self::expect(n1, let final self::Number* #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
self::expect(n0, let final self::Number* #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
self::expect(n1, let final self::Number* #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
self::expect(n0, let final self::Number* #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
self::expect(n0, let final self::Number* #t15 = self::ClassExtension|get#property(#this) in let final self::Number* #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
self::expect(n1, let final self::Number* #t17 = self::ClassExtension|get#property(#this) in let final self::Number* #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
self::expect(n1, let final self::Number #t1 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t2 = self::ClassExtension|set#property(#this, #t1) in #t1);
self::expect(n2, let final self::Number #t3 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t4 = self::ClassExtension|set#property(#this, #t3) in #t3);
self::expect(n0, let final self::Number #t5 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n2) in let final void #t6 = self::ClassExtension|set#property(#this, #t5) in #t5);
self::expect(n1, let final self::Number #t7 = self::NumberExtension|+(self::ClassExtension|get#property(#this), n1) in let final void #t8 = self::ClassExtension|set#property(#this, #t7) in #t7);
self::expect(n0, let final self::Number #t9 = self::NumberExtension|-(self::ClassExtension|get#property(#this), n1) in let final void #t10 = self::ClassExtension|set#property(#this, #t9) in #t9);
self::expect(n1, let final self::Number #t11 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t12 = self::ClassExtension|set#property(#this, #t11) in #t11);
self::expect(n0, let final self::Number #t13 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t14 = self::ClassExtension|set#property(#this, #t13) in #t13);
self::expect(n0, let final self::Number #t15 = self::ClassExtension|get#property(#this) in let final self::Number #t16 = self::ClassExtension|set#property(#this, self::NumberExtension|+(#t15, 1)) in #t15);
self::expect(n1, let final self::Number #t17 = self::ClassExtension|get#property(#this) in let final self::Number #t18 = self::ClassExtension|set#property(#this, self::NumberExtension|-(#t17, 1)) in #t17);
self::expect(n0, self::ClassExtension|get#property(#this));
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), n1));
@@ -124,58 +97,58 @@ static method ClassExtension|testImplicitProperties(lowered final self::Class* #
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), n1));
self::expect(n0, self::ClassExtension|get#property(#this));
let final self::Number* #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
let final self::Number #t19 = self::NumberExtension|+(self::ClassExtension|get#property(#this), 1) in let final void #t20 = self::ClassExtension|set#property(#this, #t19) in #t19;
self::expect(n1, self::ClassExtension|get#property(#this));
let final self::Number* #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
let final self::Number #t21 = self::NumberExtension|-(self::ClassExtension|get#property(#this), 1) in let final void #t22 = self::ClassExtension|set#property(#this, #t21) in #t21;
self::expect(n0, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|+(self::ClassExtension|get#property(#this), 1));
self::expect(n1, self::ClassExtension|get#property(#this));
self::ClassExtension|set#property(#this, self::NumberExtension|-(self::ClassExtension|get#property(#this), 1));
self::expect(n0, self::ClassExtension|get#property(#this));
}
static method ClassExtension|get#testImplicitProperties(lowered final self::Class* #this) → () →* dynamic
static method ClassExtension|get#testImplicitProperties(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::ClassExtension|testImplicitProperties(#this);
static method IntClassExtension|get#property(lowered final self::IntClass* #this) → core::int*
return #this.{self::IntClass::field}{core::int*};
static method IntClassExtension|set#property(lowered final self::IntClass* #this, core::int* value) → void {
static method IntClassExtension|get#property(lowered final self::IntClass #this) → core::int
return #this.{self::IntClass::field}{core::int};
static method IntClassExtension|set#property(lowered final self::IntClass #this, core::int value) → void {
#this.{self::IntClass::field} = value;
}
static method IntClassExtension|testImplicitProperties(lowered final self::IntClass* #this) → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
static method IntClassExtension|testImplicitProperties(lowered final self::IntClass #this) → dynamic {
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::expect(n0, self::IntClassExtension|get#property(#this));
self::expect(n1, let final core::int* #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
self::expect(n2, let final core::int* #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
self::expect(n0, let final core::int* #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
self::expect(n1, let final core::int* #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
self::expect(n0, let final core::int* #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
self::expect(n1, let final core::int* #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
self::expect(n0, let final core::int* #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
self::expect(n0, let final core::int* #t37 = self::IntClassExtension|get#property(#this) in let final core::int* #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num*) →* core::int*}) in #t37);
self::expect(n1, let final core::int* #t39 = self::IntClassExtension|get#property(#this) in let final core::int* #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num*) →* core::int*}) in #t39);
self::expect(n1, let final core::int #t23 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t24 = self::IntClassExtension|set#property(#this, #t23) in #t23);
self::expect(n2, let final core::int #t25 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t26 = self::IntClassExtension|set#property(#this, #t25) in #t25);
self::expect(n0, let final core::int #t27 = self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int} in let final void #t28 = self::IntClassExtension|set#property(#this, #t27) in #t27);
self::expect(n1, let final core::int #t29 = self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int} in let final void #t30 = self::IntClassExtension|set#property(#this, #t29) in #t29);
self::expect(n0, let final core::int #t31 = self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int} in let final void #t32 = self::IntClassExtension|set#property(#this, #t31) in #t31);
self::expect(n1, let final core::int #t33 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t34 = self::IntClassExtension|set#property(#this, #t33) in #t33);
self::expect(n0, let final core::int #t35 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t36 = self::IntClassExtension|set#property(#this, #t35) in #t35);
self::expect(n0, let final core::int #t37 = self::IntClassExtension|get#property(#this) in let final core::int #t38 = self::IntClassExtension|set#property(#this, #t37.{core::num::+}(1){(core::num) → core::int}) in #t37);
self::expect(n1, let final core::int #t39 = self::IntClassExtension|get#property(#this) in let final core::int #t40 = self::IntClassExtension|set#property(#this, #t39.{core::num::-}(1){(core::num) → core::int}) in #t39);
self::expect(n0, self::IntClassExtension|get#property(#this));
self::expect(n0, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
let final core::int* #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
let final core::int #t41 = self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int} in let final void #t42 = self::IntClassExtension|set#property(#this, #t41) in #t41;
self::expect(n1, self::IntClassExtension|get#property(#this));
let final core::int* #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
let final core::int #t43 = self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int} in let final void #t44 = self::IntClassExtension|set#property(#this, #t43) in #t43;
self::expect(n0, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(#this));
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num*) →* core::int*});
self::IntClassExtension|set#property(#this, self::IntClassExtension|get#property(#this).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(#this));
}
static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass* #this) → () →* dynamic
static method IntClassExtension|get#testImplicitProperties(lowered final self::IntClass #this) → () → dynamic
return () → dynamic => self::IntClassExtension|testImplicitProperties(#this);
static method main() → dynamic {
self::testLocals();
@@ -191,10 +164,10 @@ static method main() → dynamic {
self::IntClassExtension|testImplicitProperties(new self::IntClass::•(0));
}
static method testLocals() → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::Number* v = n0;
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::Number v = n0;
self::expect(n0, v);
self::expect(n1, v = self::NumberExtension|+(v, n1));
self::expect(n2, v = self::NumberExtension|+(v, n1));
@@ -203,8 +176,8 @@ static method testLocals() → dynamic {
self::expect(n0, v = self::NumberExtension|-(v, n1));
self::expect(n1, v = self::NumberExtension|+(v, 1));
self::expect(n0, v = self::NumberExtension|-(v, 1));
self::expect(n0, let final self::Number* #t45 = v in let final self::Number* #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
self::expect(n1, let final self::Number* #t47 = v in let final self::Number* #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
self::expect(n0, let final self::Number #t45 = v in let final self::Number #t46 = v = self::NumberExtension|+(#t45, 1) in #t45);
self::expect(n1, let final self::Number #t47 = v in let final self::Number #t48 = v = self::NumberExtension|-(#t47, 1) in #t47);
self::expect(n0, v);
self::expect(n0, v);
v = self::NumberExtension|+(v, n1);
@@ -227,284 +200,284 @@ static method testLocals() → dynamic {
self::expect(n0, v);
}
static method testProperties() → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::Class* v = new self::Class::•(n0);
self::expect(n0, v.{self::Class::field}{self::Number*});
self::expect(n1, let final self::Class* #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number*}, n1));
self::expect(n2, let final self::Class* #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number*}, n1));
self::expect(n0, let final self::Class* #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number*}, n2));
self::expect(n1, let final self::Class* #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number*}, n1));
self::expect(n0, let final self::Class* #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number*}, n1));
self::expect(n1, let final self::Class* #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number*}, 1));
self::expect(n0, let final self::Class* #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number*}, 1));
self::expect(n0, let final self::Class* #t56 = v in let final self::Number* #t57 = #t56.{self::Class::field}{self::Number*} in let final self::Number* #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
self::expect(n1, let final self::Class* #t59 = v in let final self::Number* #t60 = #t59.{self::Class::field}{self::Number*} in let final self::Number* #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
self::expect(n0, v.{self::Class::field}{self::Number*});
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number*}, n1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number*}, n1);
self::expect(n2, v.{self::Class::field}{self::Number*});
let final self::Class* #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number*}, n2);
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number*}, n1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number*}, n1);
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number*}, 1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number*}, 1);
self::expect(n0, v.{self::Class::field}{self::Number*});
let final self::Class* #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number*}, 1);
self::expect(n1, v.{self::Class::field}{self::Number*});
let final self::Class* #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number*}, 1);
self::expect(n0, v.{self::Class::field}{self::Number*});
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::Class v = new self::Class::•(n0);
self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n1, let final self::Class #t49 = v in #t49.{self::Class::field} = self::NumberExtension|+(#t49.{self::Class::field}{self::Number}, n1));
self::expect(n2, let final self::Class #t50 = v in #t50.{self::Class::field} = self::NumberExtension|+(#t50.{self::Class::field}{self::Number}, n1));
self::expect(n0, let final self::Class #t51 = v in #t51.{self::Class::field} = self::NumberExtension|-(#t51.{self::Class::field}{self::Number}, n2));
self::expect(n1, let final self::Class #t52 = v in #t52.{self::Class::field} = self::NumberExtension|+(#t52.{self::Class::field}{self::Number}, n1));
self::expect(n0, let final self::Class #t53 = v in #t53.{self::Class::field} = self::NumberExtension|-(#t53.{self::Class::field}{self::Number}, n1));
self::expect(n1, let final self::Class #t54 = v in #t54.{self::Class::field} = self::NumberExtension|+(#t54.{self::Class::field}{self::Number}, 1));
self::expect(n0, let final self::Class #t55 = v in #t55.{self::Class::field} = self::NumberExtension|-(#t55.{self::Class::field}{self::Number}, 1));
self::expect(n0, let final self::Class #t56 = v in let final self::Number #t57 = #t56.{self::Class::field}{self::Number} in let final self::Number #t58 = #t56.{self::Class::field} = self::NumberExtension|+(#t57, 1) in #t57);
self::expect(n1, let final self::Class #t59 = v in let final self::Number #t60 = #t59.{self::Class::field}{self::Number} in let final self::Number #t61 = #t59.{self::Class::field} = self::NumberExtension|-(#t60, 1) in #t60);
self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t62 = v in #t62.{self::Class::field} = self::NumberExtension|+(#t62.{self::Class::field}{self::Number}, n1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t63 = v in #t63.{self::Class::field} = self::NumberExtension|+(#t63.{self::Class::field}{self::Number}, n1);
self::expect(n2, v.{self::Class::field}{self::Number});
let final self::Class #t64 = v in #t64.{self::Class::field} = self::NumberExtension|-(#t64.{self::Class::field}{self::Number}, n2);
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t65 = v in #t65.{self::Class::field} = self::NumberExtension|+(#t65.{self::Class::field}{self::Number}, n1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t66 = v in #t66.{self::Class::field} = self::NumberExtension|-(#t66.{self::Class::field}{self::Number}, n1);
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t67 = v in #t67.{self::Class::field} = self::NumberExtension|+(#t67.{self::Class::field}{self::Number}, 1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t68 = v in #t68.{self::Class::field} = self::NumberExtension|-(#t68.{self::Class::field}{self::Number}, 1);
self::expect(n0, v.{self::Class::field}{self::Number});
let final self::Class #t69 = v in #t69.{self::Class::field} = self::NumberExtension|+(#t69.{self::Class::field}{self::Number}, 1);
self::expect(n1, v.{self::Class::field}{self::Number});
let final self::Class #t70 = v in #t70.{self::Class::field} = self::NumberExtension|-(#t70.{self::Class::field}{self::Number}, 1);
self::expect(n0, v.{self::Class::field}{self::Number});
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n1, let final self::Class* #t71 = v in let final self::Number* #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
self::expect(n2, let final self::Class* #t74 = v in let final self::Number* #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
self::expect(n0, let final self::Class* #t77 = v in let final self::Number* #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
self::expect(n1, let final self::Class* #t80 = v in let final self::Number* #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
self::expect(n0, let final self::Class* #t83 = v in let final self::Number* #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
self::expect(n1, let final self::Class* #t86 = v in let final self::Number* #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
self::expect(n0, let final self::Class* #t89 = v in let final self::Number* #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
self::expect(n0, let final self::Class* #t92 = v in let final self::Number* #t93 = self::ClassExtension|get#property(#t92) in let final self::Number* #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
self::expect(n1, let final self::Class* #t95 = v in let final self::Number* #t96 = self::ClassExtension|get#property(#t95) in let final self::Number* #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
self::expect(n1, let final self::Class #t71 = v in let final self::Number #t72 = self::NumberExtension|+(self::ClassExtension|get#property(#t71), n1) in let final void #t73 = self::ClassExtension|set#property(#t71, #t72) in #t72);
self::expect(n2, let final self::Class #t74 = v in let final self::Number #t75 = self::NumberExtension|+(self::ClassExtension|get#property(#t74), n1) in let final void #t76 = self::ClassExtension|set#property(#t74, #t75) in #t75);
self::expect(n0, let final self::Class #t77 = v in let final self::Number #t78 = self::NumberExtension|-(self::ClassExtension|get#property(#t77), n2) in let final void #t79 = self::ClassExtension|set#property(#t77, #t78) in #t78);
self::expect(n1, let final self::Class #t80 = v in let final self::Number #t81 = self::NumberExtension|+(self::ClassExtension|get#property(#t80), n1) in let final void #t82 = self::ClassExtension|set#property(#t80, #t81) in #t81);
self::expect(n0, let final self::Class #t83 = v in let final self::Number #t84 = self::NumberExtension|-(self::ClassExtension|get#property(#t83), n1) in let final void #t85 = self::ClassExtension|set#property(#t83, #t84) in #t84);
self::expect(n1, let final self::Class #t86 = v in let final self::Number #t87 = self::NumberExtension|+(self::ClassExtension|get#property(#t86), 1) in let final void #t88 = self::ClassExtension|set#property(#t86, #t87) in #t87);
self::expect(n0, let final self::Class #t89 = v in let final self::Number #t90 = self::NumberExtension|-(self::ClassExtension|get#property(#t89), 1) in let final void #t91 = self::ClassExtension|set#property(#t89, #t90) in #t90);
self::expect(n0, let final self::Class #t92 = v in let final self::Number #t93 = self::ClassExtension|get#property(#t92) in let final self::Number #t94 = self::ClassExtension|set#property(#t92, self::NumberExtension|+(#t93, 1)) in #t93);
self::expect(n1, let final self::Class #t95 = v in let final self::Number #t96 = self::ClassExtension|get#property(#t95) in let final self::Number #t97 = self::ClassExtension|set#property(#t95, self::NumberExtension|-(#t96, 1)) in #t96);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
let final self::Class #t98 = v in self::ClassExtension|set#property(#t98, self::NumberExtension|+(self::ClassExtension|get#property(#t98), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
let final self::Class #t99 = v in self::ClassExtension|set#property(#t99, self::NumberExtension|+(self::ClassExtension|get#property(#t99), n1));
self::expect(n2, self::ClassExtension|get#property(v));
let final self::Class* #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
let final self::Class #t100 = v in self::ClassExtension|set#property(#t100, self::NumberExtension|-(self::ClassExtension|get#property(#t100), n2));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
let final self::Class #t101 = v in self::ClassExtension|set#property(#t101, self::NumberExtension|+(self::ClassExtension|get#property(#t101), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
let final self::Class #t102 = v in self::ClassExtension|set#property(#t102, self::NumberExtension|-(self::ClassExtension|get#property(#t102), n1));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t103 = v in let final self::Number* #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
let final self::Class #t103 = v in let final self::Number #t104 = self::NumberExtension|+(self::ClassExtension|get#property(#t103), 1) in let final void #t105 = self::ClassExtension|set#property(#t103, #t104) in #t104;
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t106 = v in let final self::Number* #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
let final self::Class #t106 = v in let final self::Number #t107 = self::NumberExtension|-(self::ClassExtension|get#property(#t106), 1) in let final void #t108 = self::ClassExtension|set#property(#t106, #t107) in #t107;
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
let final self::Class #t109 = v in self::ClassExtension|set#property(#t109, self::NumberExtension|+(self::ClassExtension|get#property(#t109), 1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
let final self::Class #t110 = v in self::ClassExtension|set#property(#t110, self::NumberExtension|-(self::ClassExtension|get#property(#t110), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testIntProperties() → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
self::IntClass* v = new self::IntClass::•(n0);
self::expect(n0, v.{self::IntClass::field}{core::int*});
self::expect(n1, let final self::IntClass* #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n2, let final self::IntClass* #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t118 = v in let final core::int* #t119 = #t118.{self::IntClass::field}{core::int*} in let final core::int* #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num*) →* core::int*} in #t119);
self::expect(n1, let final self::IntClass* #t121 = v in let final core::int* #t122 = #t121.{self::IntClass::field}{core::int*} in let final core::int* #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num*) →* core::int*} in #t122);
self::expect(n0, v.{self::IntClass::field}{core::int*});
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
self::expect(n2, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int*}.{core::num::-}(n2){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int*}.{core::num::+}(n1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int*}.{core::num::-}(n1){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int*}.{core::num::+}(1){(core::num*) →* core::int*};
self::expect(n1, v.{self::IntClass::field}{core::int*});
let final self::IntClass* #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int*}.{core::num::-}(1){(core::num*) →* core::int*};
self::expect(n0, v.{self::IntClass::field}{core::int*});
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::IntClass v = new self::IntClass::•(n0);
self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n1, let final self::IntClass #t111 = v in #t111.{self::IntClass::field} = #t111.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, let final self::IntClass #t112 = v in #t112.{self::IntClass::field} = #t112.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t113 = v in #t113.{self::IntClass::field} = #t113.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int});
self::expect(n1, let final self::IntClass #t114 = v in #t114.{self::IntClass::field} = #t114.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t115 = v in #t115.{self::IntClass::field} = #t115.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int});
self::expect(n1, let final self::IntClass #t116 = v in #t116.{self::IntClass::field} = #t116.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t117 = v in #t117.{self::IntClass::field} = #t117.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int});
self::expect(n0, let final self::IntClass #t118 = v in let final core::int #t119 = #t118.{self::IntClass::field}{core::int} in let final core::int #t120 = #t118.{self::IntClass::field} = #t119.{core::num::+}(1){(core::num) → core::int} in #t119);
self::expect(n1, let final self::IntClass #t121 = v in let final core::int #t122 = #t121.{self::IntClass::field}{core::int} in let final core::int #t123 = #t121.{self::IntClass::field} = #t122.{core::num::-}(1){(core::num) → core::int} in #t122);
self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t124 = v in #t124.{self::IntClass::field} = #t124.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t125 = v in #t125.{self::IntClass::field} = #t125.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
self::expect(n2, v.{self::IntClass::field}{core::int});
let final self::IntClass #t126 = v in #t126.{self::IntClass::field} = #t126.{self::IntClass::field}{core::int}.{core::num::-}(n2){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t127 = v in #t127.{self::IntClass::field} = #t127.{self::IntClass::field}{core::int}.{core::num::+}(n1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t128 = v in #t128.{self::IntClass::field} = #t128.{self::IntClass::field}{core::int}.{core::num::-}(n1){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t129 = v in #t129.{self::IntClass::field} = #t129.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t130 = v in #t130.{self::IntClass::field} = #t130.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
let final self::IntClass #t131 = v in #t131.{self::IntClass::field} = #t131.{self::IntClass::field}{core::int}.{core::num::+}(1){(core::num) → core::int};
self::expect(n1, v.{self::IntClass::field}{core::int});
let final self::IntClass #t132 = v in #t132.{self::IntClass::field} = #t132.{self::IntClass::field}{core::int}.{core::num::-}(1){(core::num) → core::int};
self::expect(n0, v.{self::IntClass::field}{core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n1, let final self::IntClass* #t133 = v in let final core::int* #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
self::expect(n2, let final self::IntClass* #t136 = v in let final core::int* #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
self::expect(n0, let final self::IntClass* #t139 = v in let final core::int* #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
self::expect(n1, let final self::IntClass* #t142 = v in let final core::int* #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
self::expect(n0, let final self::IntClass* #t145 = v in let final core::int* #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
self::expect(n1, let final self::IntClass* #t148 = v in let final core::int* #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
self::expect(n0, let final self::IntClass* #t151 = v in let final core::int* #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
self::expect(n0, let final self::IntClass* #t154 = v in let final core::int* #t155 = self::IntClassExtension|get#property(#t154) in let final core::int* #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num*) →* core::int*}) in #t155);
self::expect(n1, let final self::IntClass* #t157 = v in let final core::int* #t158 = self::IntClassExtension|get#property(#t157) in let final core::int* #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num*) →* core::int*}) in #t158);
self::expect(n1, let final self::IntClass #t133 = v in let final core::int #t134 = self::IntClassExtension|get#property(#t133).{core::num::+}(n1){(core::num) → core::int} in let final void #t135 = self::IntClassExtension|set#property(#t133, #t134) in #t134);
self::expect(n2, let final self::IntClass #t136 = v in let final core::int #t137 = self::IntClassExtension|get#property(#t136).{core::num::+}(n1){(core::num) → core::int} in let final void #t138 = self::IntClassExtension|set#property(#t136, #t137) in #t137);
self::expect(n0, let final self::IntClass #t139 = v in let final core::int #t140 = self::IntClassExtension|get#property(#t139).{core::num::-}(n2){(core::num) → core::int} in let final void #t141 = self::IntClassExtension|set#property(#t139, #t140) in #t140);
self::expect(n1, let final self::IntClass #t142 = v in let final core::int #t143 = self::IntClassExtension|get#property(#t142).{core::num::+}(n1){(core::num) → core::int} in let final void #t144 = self::IntClassExtension|set#property(#t142, #t143) in #t143);
self::expect(n0, let final self::IntClass #t145 = v in let final core::int #t146 = self::IntClassExtension|get#property(#t145).{core::num::-}(n1){(core::num) → core::int} in let final void #t147 = self::IntClassExtension|set#property(#t145, #t146) in #t146);
self::expect(n1, let final self::IntClass #t148 = v in let final core::int #t149 = self::IntClassExtension|get#property(#t148).{core::num::+}(1){(core::num) → core::int} in let final void #t150 = self::IntClassExtension|set#property(#t148, #t149) in #t149);
self::expect(n0, let final self::IntClass #t151 = v in let final core::int #t152 = self::IntClassExtension|get#property(#t151).{core::num::-}(1){(core::num) → core::int} in let final void #t153 = self::IntClassExtension|set#property(#t151, #t152) in #t152);
self::expect(n0, let final self::IntClass #t154 = v in let final core::int #t155 = self::IntClassExtension|get#property(#t154) in let final core::int #t156 = self::IntClassExtension|set#property(#t154, #t155.{core::num::+}(1){(core::num) → core::int}) in #t155);
self::expect(n1, let final self::IntClass #t157 = v in let final core::int #t158 = self::IntClassExtension|get#property(#t157) in let final core::int #t159 = self::IntClassExtension|set#property(#t157, #t158.{core::num::-}(1){(core::num) → core::int}) in #t158);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t160 = v in self::IntClassExtension|set#property(#t160, self::IntClassExtension|get#property(#t160).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t161 = v in self::IntClassExtension|set#property(#t161, self::IntClassExtension|get#property(#t161).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
let final self::IntClass* #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num*) →* core::int*});
let final self::IntClass #t162 = v in self::IntClassExtension|set#property(#t162, self::IntClassExtension|get#property(#t162).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t163 = v in self::IntClassExtension|set#property(#t163, self::IntClassExtension|get#property(#t163).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num*) →* core::int*});
let final self::IntClass #t164 = v in self::IntClassExtension|set#property(#t164, self::IntClassExtension|get#property(#t164).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t165 = v in let final core::int* #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
let final self::IntClass #t165 = v in let final core::int #t166 = self::IntClassExtension|get#property(#t165).{core::num::+}(1){(core::num) → core::int} in let final void #t167 = self::IntClassExtension|set#property(#t165, #t166) in #t166;
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t168 = v in let final core::int* #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
let final self::IntClass #t168 = v in let final core::int #t169 = self::IntClassExtension|get#property(#t168).{core::num::-}(1){(core::num) → core::int} in let final void #t170 = self::IntClassExtension|set#property(#t168, #t169) in #t169;
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num*) →* core::int*});
let final self::IntClass #t171 = v in self::IntClassExtension|set#property(#t171, self::IntClassExtension|get#property(#t171).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num*) →* core::int*});
let final self::IntClass #t172 = v in self::IntClassExtension|set#property(#t172, self::IntClassExtension|get#property(#t172).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
static method testExplicitProperties() → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::Class* v = new self::Class::•(n0);
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::Class v = new self::Class::•(n0);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n1, let final self::Class* #t173 = v in let final self::Number* #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
self::expect(n2, let final self::Class* #t176 = v in let final self::Number* #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
self::expect(n0, let final self::Class* #t179 = v in let final self::Number* #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
self::expect(n1, let final self::Class* #t182 = v in let final self::Number* #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
self::expect(n0, let final self::Class* #t185 = v in let final self::Number* #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
self::expect(n1, let final self::Class* #t188 = v in let final self::Number* #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
self::expect(n0, let final self::Class* #t191 = v in let final self::Number* #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
self::expect(n0, let final self::Class* #t194 = v in let final self::Number* #t195 = self::ClassExtension|get#property(#t194) in let final self::Number* #t196 = let final self::Number* #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
self::expect(n1, let final self::Class* #t199 = v in let final self::Number* #t200 = self::ClassExtension|get#property(#t199) in let final self::Number* #t201 = let final self::Number* #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
self::expect(n1, let final self::Class #t173 = v in let final self::Number #t174 = self::NumberExtension|+(self::ClassExtension|get#property(#t173), n1) in let final void #t175 = self::ClassExtension|set#property(#t173, #t174) in #t174);
self::expect(n2, let final self::Class #t176 = v in let final self::Number #t177 = self::NumberExtension|+(self::ClassExtension|get#property(#t176), n1) in let final void #t178 = self::ClassExtension|set#property(#t176, #t177) in #t177);
self::expect(n0, let final self::Class #t179 = v in let final self::Number #t180 = self::NumberExtension|-(self::ClassExtension|get#property(#t179), n2) in let final void #t181 = self::ClassExtension|set#property(#t179, #t180) in #t180);
self::expect(n1, let final self::Class #t182 = v in let final self::Number #t183 = self::NumberExtension|+(self::ClassExtension|get#property(#t182), n1) in let final void #t184 = self::ClassExtension|set#property(#t182, #t183) in #t183);
self::expect(n0, let final self::Class #t185 = v in let final self::Number #t186 = self::NumberExtension|-(self::ClassExtension|get#property(#t185), n1) in let final void #t187 = self::ClassExtension|set#property(#t185, #t186) in #t186);
self::expect(n1, let final self::Class #t188 = v in let final self::Number #t189 = self::NumberExtension|+(self::ClassExtension|get#property(#t188), 1) in let final void #t190 = self::ClassExtension|set#property(#t188, #t189) in #t189);
self::expect(n0, let final self::Class #t191 = v in let final self::Number #t192 = self::NumberExtension|-(self::ClassExtension|get#property(#t191), 1) in let final void #t193 = self::ClassExtension|set#property(#t191, #t192) in #t192);
self::expect(n0, let final self::Class #t194 = v in let final self::Number #t195 = self::ClassExtension|get#property(#t194) in let final self::Number #t196 = let final self::Number #t197 = self::NumberExtension|+(#t195, 1) in let final void #t198 = self::ClassExtension|set#property(#t194, #t197) in #t197 in #t195);
self::expect(n1, let final self::Class #t199 = v in let final self::Number #t200 = self::ClassExtension|get#property(#t199) in let final self::Number #t201 = let final self::Number #t202 = self::NumberExtension|-(#t200, 1) in let final void #t203 = self::ClassExtension|set#property(#t199, #t202) in #t202 in #t200);
self::expect(n0, self::ClassExtension|get#property(v));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
let final self::Class #t204 = v in self::ClassExtension|set#property(#t204, self::NumberExtension|+(self::ClassExtension|get#property(#t204), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
let final self::Class #t205 = v in self::ClassExtension|set#property(#t205, self::NumberExtension|+(self::ClassExtension|get#property(#t205), n1));
self::expect(n2, self::ClassExtension|get#property(v));
let final self::Class* #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
let final self::Class #t206 = v in self::ClassExtension|set#property(#t206, self::NumberExtension|-(self::ClassExtension|get#property(#t206), n2));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
let final self::Class #t207 = v in self::ClassExtension|set#property(#t207, self::NumberExtension|+(self::ClassExtension|get#property(#t207), n1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
let final self::Class #t208 = v in self::ClassExtension|set#property(#t208, self::NumberExtension|-(self::ClassExtension|get#property(#t208), n1));
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t209 = v in let final self::Number* #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
let final self::Class #t209 = v in let final self::Number #t210 = self::NumberExtension|+(self::ClassExtension|get#property(#t209), 1) in let final void #t211 = self::ClassExtension|set#property(#t209, #t210) in #t210;
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t212 = v in let final self::Number* #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
let final self::Class #t212 = v in let final self::Number #t213 = self::NumberExtension|-(self::ClassExtension|get#property(#t212), 1) in let final void #t214 = self::ClassExtension|set#property(#t212, #t213) in #t213;
self::expect(n0, self::ClassExtension|get#property(v));
let final self::Class* #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
let final self::Class #t215 = v in self::ClassExtension|set#property(#t215, self::NumberExtension|+(self::ClassExtension|get#property(#t215), 1));
self::expect(n1, self::ClassExtension|get#property(v));
let final self::Class* #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
let final self::Class #t216 = v in self::ClassExtension|set#property(#t216, self::NumberExtension|-(self::ClassExtension|get#property(#t216), 1));
self::expect(n0, self::ClassExtension|get#property(v));
}
static method testExplicitIntProperties() → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
self::IntClass* v = new self::IntClass::•(n0);
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::IntClass v = new self::IntClass::•(n0);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n1, let final self::IntClass* #t217 = v in let final core::int* #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
self::expect(n2, let final self::IntClass* #t220 = v in let final core::int* #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
self::expect(n0, let final self::IntClass* #t223 = v in let final core::int* #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
self::expect(n1, let final self::IntClass* #t226 = v in let final core::int* #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
self::expect(n0, let final self::IntClass* #t229 = v in let final core::int* #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
self::expect(n1, let final self::IntClass* #t232 = v in let final core::int* #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
self::expect(n0, let final self::IntClass* #t235 = v in let final core::int* #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
self::expect(n0, let final self::IntClass* #t238 = v in let final core::int* #t239 = self::IntClassExtension|get#property(#t238) in let final core::int* #t240 = let final core::int* #t241 = #t239.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
self::expect(n1, let final self::IntClass* #t243 = v in let final core::int* #t244 = self::IntClassExtension|get#property(#t243) in let final core::int* #t245 = let final core::int* #t246 = #t244.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
self::expect(n1, let final self::IntClass #t217 = v in let final core::int #t218 = self::IntClassExtension|get#property(#t217).{core::num::+}(n1){(core::num) → core::int} in let final void #t219 = self::IntClassExtension|set#property(#t217, #t218) in #t218);
self::expect(n2, let final self::IntClass #t220 = v in let final core::int #t221 = self::IntClassExtension|get#property(#t220).{core::num::+}(n1){(core::num) → core::int} in let final void #t222 = self::IntClassExtension|set#property(#t220, #t221) in #t221);
self::expect(n0, let final self::IntClass #t223 = v in let final core::int #t224 = self::IntClassExtension|get#property(#t223).{core::num::-}(n2){(core::num) → core::int} in let final void #t225 = self::IntClassExtension|set#property(#t223, #t224) in #t224);
self::expect(n1, let final self::IntClass #t226 = v in let final core::int #t227 = self::IntClassExtension|get#property(#t226).{core::num::+}(n1){(core::num) → core::int} in let final void #t228 = self::IntClassExtension|set#property(#t226, #t227) in #t227);
self::expect(n0, let final self::IntClass #t229 = v in let final core::int #t230 = self::IntClassExtension|get#property(#t229).{core::num::-}(n1){(core::num) → core::int} in let final void #t231 = self::IntClassExtension|set#property(#t229, #t230) in #t230);
self::expect(n1, let final self::IntClass #t232 = v in let final core::int #t233 = self::IntClassExtension|get#property(#t232).{core::num::+}(1){(core::num) → core::int} in let final void #t234 = self::IntClassExtension|set#property(#t232, #t233) in #t233);
self::expect(n0, let final self::IntClass #t235 = v in let final core::int #t236 = self::IntClassExtension|get#property(#t235).{core::num::-}(1){(core::num) → core::int} in let final void #t237 = self::IntClassExtension|set#property(#t235, #t236) in #t236);
self::expect(n0, let final self::IntClass #t238 = v in let final core::int #t239 = self::IntClassExtension|get#property(#t238) in let final core::int #t240 = let final core::int #t241 = #t239.{core::num::+}(1){(core::num) → core::int} in let final void #t242 = self::IntClassExtension|set#property(#t238, #t241) in #t241 in #t239);
self::expect(n1, let final self::IntClass #t243 = v in let final core::int #t244 = self::IntClassExtension|get#property(#t243) in let final core::int #t245 = let final core::int #t246 = #t244.{core::num::-}(1){(core::num) → core::int} in let final void #t247 = self::IntClassExtension|set#property(#t243, #t246) in #t246 in #t244);
self::expect(n0, self::IntClassExtension|get#property(v));
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t248 = v in self::IntClassExtension|set#property(#t248, self::IntClassExtension|get#property(#t248).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t249 = v in self::IntClassExtension|set#property(#t249, self::IntClassExtension|get#property(#t249).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, self::IntClassExtension|get#property(v));
let final self::IntClass* #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num*) →* core::int*});
let final self::IntClass #t250 = v in self::IntClassExtension|set#property(#t250, self::IntClassExtension|get#property(#t250).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num*) →* core::int*});
let final self::IntClass #t251 = v in self::IntClassExtension|set#property(#t251, self::IntClassExtension|get#property(#t251).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num*) →* core::int*});
let final self::IntClass #t252 = v in self::IntClassExtension|set#property(#t252, self::IntClassExtension|get#property(#t252).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t253 = v in let final core::int* #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
let final self::IntClass #t253 = v in let final core::int #t254 = self::IntClassExtension|get#property(#t253).{core::num::+}(1){(core::num) → core::int} in let final void #t255 = self::IntClassExtension|set#property(#t253, #t254) in #t254;
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t256 = v in let final core::int* #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
let final self::IntClass #t256 = v in let final core::int #t257 = self::IntClassExtension|get#property(#t256).{core::num::-}(1){(core::num) → core::int} in let final void #t258 = self::IntClassExtension|set#property(#t256, #t257) in #t257;
self::expect(n0, self::IntClassExtension|get#property(v));
let final self::IntClass* #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num*) →* core::int*});
let final self::IntClass #t259 = v in self::IntClassExtension|set#property(#t259, self::IntClassExtension|get#property(#t259).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, self::IntClassExtension|get#property(v));
let final self::IntClass* #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num*) →* core::int*});
let final self::IntClass #t260 = v in self::IntClassExtension|set#property(#t260, self::IntClassExtension|get#property(#t260).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, self::IntClassExtension|get#property(v));
}
static method testExplicitNullAwareProperties(self::Class* v) → dynamic {
self::Number* n0 = new self::Number::•(0);
self::Number* n1 = new self::Number::•(1);
self::Number* n2 = new self::Number::•(2);
self::expect(n0, let final self::Class* #t261 = v in #t261 == null ?{self::Number*} null : self::ClassExtension|get#property(#t261), v == null);
self::expect(n1, let final self::Class* #t262 = v in #t262 == null ?{self::Number*} null : let final self::Number* #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262), n1) in let final void #t264 = self::ClassExtension|set#property(#t262, #t263) in #t263, v == null);
self::expect(n2, let final self::Class* #t265 = v in #t265 == null ?{self::Number*} null : let final self::Number* #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265), n1) in let final void #t267 = self::ClassExtension|set#property(#t265, #t266) in #t266, v == null);
self::expect(n0, let final self::Class* #t268 = v in #t268 == null ?{self::Number*} null : let final self::Number* #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268), n2) in let final void #t270 = self::ClassExtension|set#property(#t268, #t269) in #t269, v == null);
self::expect(n1, let final self::Class* #t271 = v in #t271 == null ?{self::Number*} null : let final self::Number* #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271), n1) in let final void #t273 = self::ClassExtension|set#property(#t271, #t272) in #t272, v == null);
self::expect(n0, let final self::Class* #t274 = v in #t274 == null ?{self::Number*} null : let final self::Number* #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274), n1) in let final void #t276 = self::ClassExtension|set#property(#t274, #t275) in #t275, v == null);
self::expect(n1, let final self::Class* #t277 = v in #t277 == null ?{self::Number*} null : let final self::Number* #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277), 1) in let final void #t279 = self::ClassExtension|set#property(#t277, #t278) in #t278, v == null);
self::expect(n0, let final self::Class* #t280 = v in #t280 == null ?{self::Number*} null : let final self::Number* #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280), 1) in let final void #t282 = self::ClassExtension|set#property(#t280, #t281) in #t281, v == null);
self::expect(n0, let final self::Class* #t283 = v in #t283 == null ?{self::Number*} null : let final self::Number* #t284 = self::ClassExtension|get#property(#t283) in let final self::Number* #t285 = let final self::Number* #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283, #t286) in #t286 in #t284, v == null);
self::expect(n1, let final self::Class* #t288 = v in #t288 == null ?{self::Number*} null : let final self::Number* #t289 = self::ClassExtension|get#property(#t288) in let final self::Number* #t290 = let final self::Number* #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288, #t291) in #t291 in #t289, v == null);
self::expect(n0, let final self::Class* #t293 = v in #t293 == null ?{self::Number*} null : self::ClassExtension|get#property(#t293), v == null);
self::expect(n0, let final self::Class* #t294 = v in #t294 == null ?{self::Number*} null : self::ClassExtension|get#property(#t294), v == null);
let final self::Class* #t295 = v in #t295 == null ?{self::Number*} null : self::ClassExtension|set#property(#t295, self::NumberExtension|+(self::ClassExtension|get#property(#t295), n1));
self::expect(n1, let final self::Class* #t296 = v in #t296 == null ?{self::Number*} null : self::ClassExtension|get#property(#t296), v == null);
let final self::Class* #t297 = v in #t297 == null ?{self::Number*} null : self::ClassExtension|set#property(#t297, self::NumberExtension|+(self::ClassExtension|get#property(#t297), n1));
self::expect(n2, let final self::Class* #t298 = v in #t298 == null ?{self::Number*} null : self::ClassExtension|get#property(#t298), v == null);
let final self::Class* #t299 = v in #t299 == null ?{self::Number*} null : self::ClassExtension|set#property(#t299, self::NumberExtension|-(self::ClassExtension|get#property(#t299), n2));
self::expect(n0, let final self::Class* #t300 = v in #t300 == null ?{self::Number*} null : self::ClassExtension|get#property(#t300), v == null);
let final self::Class* #t301 = v in #t301 == null ?{self::Number*} null : self::ClassExtension|set#property(#t301, self::NumberExtension|+(self::ClassExtension|get#property(#t301), n1));
self::expect(n1, let final self::Class* #t302 = v in #t302 == null ?{self::Number*} null : self::ClassExtension|get#property(#t302), v == null);
let final self::Class* #t303 = v in #t303 == null ?{self::Number*} null : self::ClassExtension|set#property(#t303, self::NumberExtension|-(self::ClassExtension|get#property(#t303), n1));
self::expect(n0, let final self::Class* #t304 = v in #t304 == null ?{self::Number*} null : self::ClassExtension|get#property(#t304), v == null);
let final self::Class* #t305 = v in #t305 == null ?{self::Number*} null : let final self::Number* #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305), 1) in let final void #t307 = self::ClassExtension|set#property(#t305, #t306) in #t306;
self::expect(n1, let final self::Class* #t308 = v in #t308 == null ?{self::Number*} null : self::ClassExtension|get#property(#t308), v == null);
let final self::Class* #t309 = v in #t309 == null ?{self::Number*} null : let final self::Number* #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309), 1) in let final void #t311 = self::ClassExtension|set#property(#t309, #t310) in #t310;
self::expect(n0, let final self::Class* #t312 = v in #t312 == null ?{self::Number*} null : self::ClassExtension|get#property(#t312), v == null);
let final self::Class* #t313 = v in #t313 == null ?{self::Number*} null : self::ClassExtension|set#property(#t313, self::NumberExtension|+(self::ClassExtension|get#property(#t313), 1));
self::expect(n1, let final self::Class* #t314 = v in #t314 == null ?{self::Number*} null : self::ClassExtension|get#property(#t314), v == null);
let final self::Class* #t315 = v in #t315 == null ?{self::Number*} null : self::ClassExtension|set#property(#t315, self::NumberExtension|-(self::ClassExtension|get#property(#t315), 1));
self::expect(n0, let final self::Class* #t316 = v in #t316 == null ?{self::Number*} null : self::ClassExtension|get#property(#t316), v == null);
static method testExplicitNullAwareProperties(self::Class? v) → dynamic {
self::Number n0 = new self::Number::•(0);
self::Number n1 = new self::Number::•(1);
self::Number n2 = new self::Number::•(2);
self::expect(n0, let final self::Class? #t261 = v in #t261 == null ?{self::Number?} null : self::ClassExtension|get#property(#t261{self::Class}), v == null);
self::expect(n1, let final self::Class? #t262 = v in #t262 == null ?{self::Number?} null : let final self::Number #t263 = self::NumberExtension|+(self::ClassExtension|get#property(#t262{self::Class}), n1) in let final void #t264 = self::ClassExtension|set#property(#t262{self::Class}, #t263) in #t263, v == null);
self::expect(n2, let final self::Class? #t265 = v in #t265 == null ?{self::Number?} null : let final self::Number #t266 = self::NumberExtension|+(self::ClassExtension|get#property(#t265{self::Class}), n1) in let final void #t267 = self::ClassExtension|set#property(#t265{self::Class}, #t266) in #t266, v == null);
self::expect(n0, let final self::Class? #t268 = v in #t268 == null ?{self::Number?} null : let final self::Number #t269 = self::NumberExtension|-(self::ClassExtension|get#property(#t268{self::Class}), n2) in let final void #t270 = self::ClassExtension|set#property(#t268{self::Class}, #t269) in #t269, v == null);
self::expect(n1, let final self::Class? #t271 = v in #t271 == null ?{self::Number?} null : let final self::Number #t272 = self::NumberExtension|+(self::ClassExtension|get#property(#t271{self::Class}), n1) in let final void #t273 = self::ClassExtension|set#property(#t271{self::Class}, #t272) in #t272, v == null);
self::expect(n0, let final self::Class? #t274 = v in #t274 == null ?{self::Number?} null : let final self::Number #t275 = self::NumberExtension|-(self::ClassExtension|get#property(#t274{self::Class}), n1) in let final void #t276 = self::ClassExtension|set#property(#t274{self::Class}, #t275) in #t275, v == null);
self::expect(n1, let final self::Class? #t277 = v in #t277 == null ?{self::Number?} null : let final self::Number #t278 = self::NumberExtension|+(self::ClassExtension|get#property(#t277{self::Class}), 1) in let final void #t279 = self::ClassExtension|set#property(#t277{self::Class}, #t278) in #t278, v == null);
self::expect(n0, let final self::Class? #t280 = v in #t280 == null ?{self::Number?} null : let final self::Number #t281 = self::NumberExtension|-(self::ClassExtension|get#property(#t280{self::Class}), 1) in let final void #t282 = self::ClassExtension|set#property(#t280{self::Class}, #t281) in #t281, v == null);
self::expect(n0, let final self::Class? #t283 = v in #t283 == null ?{self::Number?} null : let final self::Number #t284 = self::ClassExtension|get#property(#t283{self::Class}) in let final self::Number #t285 = let final self::Number #t286 = self::NumberExtension|+(#t284, 1) in let final void #t287 = self::ClassExtension|set#property(#t283{self::Class}, #t286) in #t286 in #t284, v == null);
self::expect(n1, let final self::Class? #t288 = v in #t288 == null ?{self::Number?} null : let final self::Number #t289 = self::ClassExtension|get#property(#t288{self::Class}) in let final self::Number #t290 = let final self::Number #t291 = self::NumberExtension|-(#t289, 1) in let final void #t292 = self::ClassExtension|set#property(#t288{self::Class}, #t291) in #t291 in #t289, v == null);
self::expect(n0, let final self::Class? #t293 = v in #t293 == null ?{self::Number?} null : self::ClassExtension|get#property(#t293{self::Class}), v == null);
self::expect(n0, let final self::Class? #t294 = v in #t294 == null ?{self::Number?} null : self::ClassExtension|get#property(#t294{self::Class}), v == null);
let final self::Class? #t295 = v in #t295 == null ?{self::Number?} null : self::ClassExtension|set#property(#t295{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t295{self::Class}), n1));
self::expect(n1, let final self::Class? #t296 = v in #t296 == null ?{self::Number?} null : self::ClassExtension|get#property(#t296{self::Class}), v == null);
let final self::Class? #t297 = v in #t297 == null ?{self::Number?} null : self::ClassExtension|set#property(#t297{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t297{self::Class}), n1));
self::expect(n2, let final self::Class? #t298 = v in #t298 == null ?{self::Number?} null : self::ClassExtension|get#property(#t298{self::Class}), v == null);
let final self::Class? #t299 = v in #t299 == null ?{self::Number?} null : self::ClassExtension|set#property(#t299{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t299{self::Class}), n2));
self::expect(n0, let final self::Class? #t300 = v in #t300 == null ?{self::Number?} null : self::ClassExtension|get#property(#t300{self::Class}), v == null);
let final self::Class? #t301 = v in #t301 == null ?{self::Number?} null : self::ClassExtension|set#property(#t301{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t301{self::Class}), n1));
self::expect(n1, let final self::Class? #t302 = v in #t302 == null ?{self::Number?} null : self::ClassExtension|get#property(#t302{self::Class}), v == null);
let final self::Class? #t303 = v in #t303 == null ?{self::Number?} null : self::ClassExtension|set#property(#t303{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t303{self::Class}), n1));
self::expect(n0, let final self::Class? #t304 = v in #t304 == null ?{self::Number?} null : self::ClassExtension|get#property(#t304{self::Class}), v == null);
let final self::Class? #t305 = v in #t305 == null ?{self::Number?} null : let final self::Number #t306 = self::NumberExtension|+(self::ClassExtension|get#property(#t305{self::Class}), 1) in let final void #t307 = self::ClassExtension|set#property(#t305{self::Class}, #t306) in #t306;
self::expect(n1, let final self::Class? #t308 = v in #t308 == null ?{self::Number?} null : self::ClassExtension|get#property(#t308{self::Class}), v == null);
let final self::Class? #t309 = v in #t309 == null ?{self::Number?} null : let final self::Number #t310 = self::NumberExtension|-(self::ClassExtension|get#property(#t309{self::Class}), 1) in let final void #t311 = self::ClassExtension|set#property(#t309{self::Class}, #t310) in #t310;
self::expect(n0, let final self::Class? #t312 = v in #t312 == null ?{self::Number?} null : self::ClassExtension|get#property(#t312{self::Class}), v == null);
let final self::Class? #t313 = v in #t313 == null ?{self::Number?} null : self::ClassExtension|set#property(#t313{self::Class}, self::NumberExtension|+(self::ClassExtension|get#property(#t313{self::Class}), 1));
self::expect(n1, let final self::Class? #t314 = v in #t314 == null ?{self::Number?} null : self::ClassExtension|get#property(#t314{self::Class}), v == null);
let final self::Class? #t315 = v in #t315 == null ?{self::Number?} null : self::ClassExtension|set#property(#t315{self::Class}, self::NumberExtension|-(self::ClassExtension|get#property(#t315{self::Class}), 1));
self::expect(n0, let final self::Class? #t316 = v in #t316 == null ?{self::Number?} null : self::ClassExtension|get#property(#t316{self::Class}), v == null);
}
static method testExplicitNullAwareIntProperties(self::IntClass* v) → dynamic {
core::int* n0 = 0;
core::int* n1 = 1;
core::int* n2 = 2;
self::expect(n0, let final self::IntClass* #t317 = v in #t317 == null ?{core::int*} null : self::IntClassExtension|get#property(#t317), v == null);
self::expect(n1, let final self::IntClass* #t318 = v in #t318 == null ?{core::int*} null : let final core::int* #t319 = self::IntClassExtension|get#property(#t318).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t320 = self::IntClassExtension|set#property(#t318, #t319) in #t319, v == null);
self::expect(n2, let final self::IntClass* #t321 = v in #t321 == null ?{core::int*} null : let final core::int* #t322 = self::IntClassExtension|get#property(#t321).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t323 = self::IntClassExtension|set#property(#t321, #t322) in #t322, v == null);
self::expect(n0, let final self::IntClass* #t324 = v in #t324 == null ?{core::int*} null : let final core::int* #t325 = self::IntClassExtension|get#property(#t324).{core::num::-}(n2){(core::num*) →* core::int*} in let final void #t326 = self::IntClassExtension|set#property(#t324, #t325) in #t325, v == null);
self::expect(n1, let final self::IntClass* #t327 = v in #t327 == null ?{core::int*} null : let final core::int* #t328 = self::IntClassExtension|get#property(#t327).{core::num::+}(n1){(core::num*) →* core::int*} in let final void #t329 = self::IntClassExtension|set#property(#t327, #t328) in #t328, v == null);
self::expect(n0, let final self::IntClass* #t330 = v in #t330 == null ?{core::int*} null : let final core::int* #t331 = self::IntClassExtension|get#property(#t330).{core::num::-}(n1){(core::num*) →* core::int*} in let final void #t332 = self::IntClassExtension|set#property(#t330, #t331) in #t331, v == null);
self::expect(n1, let final self::IntClass* #t333 = v in #t333 == null ?{core::int*} null : let final core::int* #t334 = self::IntClassExtension|get#property(#t333).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t335 = self::IntClassExtension|set#property(#t333, #t334) in #t334, v == null);
self::expect(n0, let final self::IntClass* #t336 = v in #t336 == null ?{core::int*} null : let final core::int* #t337 = self::IntClassExtension|get#property(#t336).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t338 = self::IntClassExtension|set#property(#t336, #t337) in #t337, v == null);
self::expect(n0, let final self::IntClass* #t339 = v in #t339 == null ?{core::int*} null : let final core::int* #t340 = self::IntClassExtension|get#property(#t339) in let final core::int* #t341 = let final core::int* #t342 = #t340.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t343 = self::IntClassExtension|set#property(#t339, #t342) in #t342 in #t340, v == null);
self::expect(n1, let final self::IntClass* #t344 = v in #t344 == null ?{core::int*} null : let final core::int* #t345 = self::IntClassExtension|get#property(#t344) in let final core::int* #t346 = let final core::int* #t347 = #t345.{core::num::-}(1){(core::num*) →* core::int*} in let final void #t348 = self::IntClassExtension|set#property(#t344, #t347) in #t347 in #t345, v == null);
self::expect(n0, let final self::IntClass* #t349 = v in #t349 == null ?{core::int*} null : self::IntClassExtension|get#property(#t349), v == null);
self::expect(n0, let final self::IntClass* #t350 = v in #t350 == null ?{core::int*} null : self::IntClassExtension|get#property(#t350), v == null);
let final self::IntClass* #t351 = v in #t351 == null ?{core::int*} null : self::IntClassExtension|set#property(#t351, self::IntClassExtension|get#property(#t351).{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t352 = v in #t352 == null ?{core::int*} null : self::IntClassExtension|get#property(#t352), v == null);
let final self::IntClass* #t353 = v in #t353 == null ?{core::int*} null : self::IntClassExtension|set#property(#t353, self::IntClassExtension|get#property(#t353).{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n2, let final self::IntClass* #t354 = v in #t354 == null ?{core::int*} null : self::IntClassExtension|get#property(#t354), v == null);
let final self::IntClass* #t355 = v in #t355 == null ?{core::int*} null : self::IntClassExtension|set#property(#t355, self::IntClassExtension|get#property(#t355).{core::num::-}(n2){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t356 = v in #t356 == null ?{core::int*} null : self::IntClassExtension|get#property(#t356), v == null);
let final self::IntClass* #t357 = v in #t357 == null ?{core::int*} null : self::IntClassExtension|set#property(#t357, self::IntClassExtension|get#property(#t357).{core::num::+}(n1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t358 = v in #t358 == null ?{core::int*} null : self::IntClassExtension|get#property(#t358), v == null);
let final self::IntClass* #t359 = v in #t359 == null ?{core::int*} null : self::IntClassExtension|set#property(#t359, self::IntClassExtension|get#property(#t359).{core::num::-}(n1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t360 = v in #t360 == null ?{core::int*} null : self::IntClassExtension|get#property(#t360), v == null);
let final self::IntClass* #t361 = v in #t361 == null ?{core::int*} null : let final core::int* #t362 = self::IntClassExtension|get#property(#t361).{core::num::+}(1){(core::num*) →* core::int*} in let final void #t363 = self::IntClassExtension|set#property(#t361, #t362) in #t362;
self::expect(n1, let final self::IntClass* #t364 = v in #t364 == null ?{core::int*} null : self::IntClassExtension|get#property(#t364), v == null);
let final self::IntClass* #t365 = v in #t365 == null ?{core::int*} null : let final core::int* #t366 = self::IntClassExtension|get#property(#t365).{core::num::-}(1){(core::num*) →* core::int*} in let final void #t367 = self::IntClassExtension|set#property(#t365, #t366) in #t366;
self::expect(n0, let final self::IntClass* #t368 = v in #t368 == null ?{core::int*} null : self::IntClassExtension|get#property(#t368), v == null);
let final self::IntClass* #t369 = v in #t369 == null ?{core::int*} null : self::IntClassExtension|set#property(#t369, self::IntClassExtension|get#property(#t369).{core::num::+}(1){(core::num*) →* core::int*});
self::expect(n1, let final self::IntClass* #t370 = v in #t370 == null ?{core::int*} null : self::IntClassExtension|get#property(#t370), v == null);
let final self::IntClass* #t371 = v in #t371 == null ?{core::int*} null : self::IntClassExtension|set#property(#t371, self::IntClassExtension|get#property(#t371).{core::num::-}(1){(core::num*) →* core::int*});
self::expect(n0, let final self::IntClass* #t372 = v in #t372 == null ?{core::int*} null : self::IntClassExtension|get#property(#t372), v == null);
static method testExplicitNullAwareIntProperties(self::IntClass? v) → dynamic {
core::int n0 = 0;
core::int n1 = 1;
core::int n2 = 2;
self::expect(n0, let final self::IntClass? #t317 = v in #t317 == null ?{core::int?} null : self::IntClassExtension|get#property(#t317{self::IntClass}), v == null);
self::expect(n1, let final self::IntClass? #t318 = v in #t318 == null ?{core::int?} null : let final core::int #t319 = self::IntClassExtension|get#property(#t318{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t320 = self::IntClassExtension|set#property(#t318{self::IntClass}, #t319) in #t319, v == null);
self::expect(n2, let final self::IntClass? #t321 = v in #t321 == null ?{core::int?} null : let final core::int #t322 = self::IntClassExtension|get#property(#t321{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t323 = self::IntClassExtension|set#property(#t321{self::IntClass}, #t322) in #t322, v == null);
self::expect(n0, let final self::IntClass? #t324 = v in #t324 == null ?{core::int?} null : let final core::int #t325 = self::IntClassExtension|get#property(#t324{self::IntClass}).{core::num::-}(n2){(core::num) → core::int} in let final void #t326 = self::IntClassExtension|set#property(#t324{self::IntClass}, #t325) in #t325, v == null);
self::expect(n1, let final self::IntClass? #t327 = v in #t327 == null ?{core::int?} null : let final core::int #t328 = self::IntClassExtension|get#property(#t327{self::IntClass}).{core::num::+}(n1){(core::num) → core::int} in let final void #t329 = self::IntClassExtension|set#property(#t327{self::IntClass}, #t328) in #t328, v == null);
self::expect(n0, let final self::IntClass? #t330 = v in #t330 == null ?{core::int?} null : let final core::int #t331 = self::IntClassExtension|get#property(#t330{self::IntClass}).{core::num::-}(n1){(core::num) → core::int} in let final void #t332 = self::IntClassExtension|set#property(#t330{self::IntClass}, #t331) in #t331, v == null);
self::expect(n1, let final self::IntClass? #t333 = v in #t333 == null ?{core::int?} null : let final core::int #t334 = self::IntClassExtension|get#property(#t333{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t335 = self::IntClassExtension|set#property(#t333{self::IntClass}, #t334) in #t334, v == null);
self::expect(n0, let final self::IntClass? #t336 = v in #t336 == null ?{core::int?} null : let final core::int #t337 = self::IntClassExtension|get#property(#t336{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t338 = self::IntClassExtension|set#property(#t336{self::IntClass}, #t337) in #t337, v == null);
self::expect(n0, let final self::IntClass? #t339 = v in #t339 == null ?{core::int?} null : let final core::int #t340 = self::IntClassExtension|get#property(#t339{self::IntClass}) in let final core::int #t341 = let final core::int #t342 = #t340.{core::num::+}(1){(core::num) → core::int} in let final void #t343 = self::IntClassExtension|set#property(#t339{self::IntClass}, #t342) in #t342 in #t340, v == null);
self::expect(n1, let final self::IntClass? #t344 = v in #t344 == null ?{core::int?} null : let final core::int #t345 = self::IntClassExtension|get#property(#t344{self::IntClass}) in let final core::int #t346 = let final core::int #t347 = #t345.{core::num::-}(1){(core::num) → core::int} in let final void #t348 = self::IntClassExtension|set#property(#t344{self::IntClass}, #t347) in #t347 in #t345, v == null);
self::expect(n0, let final self::IntClass? #t349 = v in #t349 == null ?{core::int?} null : self::IntClassExtension|get#property(#t349{self::IntClass}), v == null);
self::expect(n0, let final self::IntClass? #t350 = v in #t350 == null ?{core::int?} null : self::IntClassExtension|get#property(#t350{self::IntClass}), v == null);
let final self::IntClass? #t351 = v in #t351 == null ?{core::int?} null : self::IntClassExtension|set#property(#t351{self::IntClass}, self::IntClassExtension|get#property(#t351{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, let final self::IntClass? #t352 = v in #t352 == null ?{core::int?} null : self::IntClassExtension|get#property(#t352{self::IntClass}), v == null);
let final self::IntClass? #t353 = v in #t353 == null ?{core::int?} null : self::IntClassExtension|set#property(#t353{self::IntClass}, self::IntClassExtension|get#property(#t353{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
self::expect(n2, let final self::IntClass? #t354 = v in #t354 == null ?{core::int?} null : self::IntClassExtension|get#property(#t354{self::IntClass}), v == null);
let final self::IntClass? #t355 = v in #t355 == null ?{core::int?} null : self::IntClassExtension|set#property(#t355{self::IntClass}, self::IntClassExtension|get#property(#t355{self::IntClass}).{core::num::-}(n2){(core::num) → core::int});
self::expect(n0, let final self::IntClass? #t356 = v in #t356 == null ?{core::int?} null : self::IntClassExtension|get#property(#t356{self::IntClass}), v == null);
let final self::IntClass? #t357 = v in #t357 == null ?{core::int?} null : self::IntClassExtension|set#property(#t357{self::IntClass}, self::IntClassExtension|get#property(#t357{self::IntClass}).{core::num::+}(n1){(core::num) → core::int});
self::expect(n1, let final self::IntClass? #t358 = v in #t358 == null ?{core::int?} null : self::IntClassExtension|get#property(#t358{self::IntClass}), v == null);
let final self::IntClass? #t359 = v in #t359 == null ?{core::int?} null : self::IntClassExtension|set#property(#t359{self::IntClass}, self::IntClassExtension|get#property(#t359{self::IntClass}).{core::num::-}(n1){(core::num) → core::int});
self::expect(n0, let final self::IntClass? #t360 = v in #t360 == null ?{core::int?} null : self::IntClassExtension|get#property(#t360{self::IntClass}), v == null);
let final self::IntClass? #t361 = v in #t361 == null ?{core::int?} null : let final core::int #t362 = self::IntClassExtension|get#property(#t361{self::IntClass}).{core::num::+}(1){(core::num) → core::int} in let final void #t363 = self::IntClassExtension|set#property(#t361{self::IntClass}, #t362) in #t362;
self::expect(n1, let final self::IntClass? #t364 = v in #t364 == null ?{core::int?} null : self::IntClassExtension|get#property(#t364{self::IntClass}), v == null);
let final self::IntClass? #t365 = v in #t365 == null ?{core::int?} null : let final core::int #t366 = self::IntClassExtension|get#property(#t365{self::IntClass}).{core::num::-}(1){(core::num) → core::int} in let final void #t367 = self::IntClassExtension|set#property(#t365{self::IntClass}, #t366) in #t366;
self::expect(n0, let final self::IntClass? #t368 = v in #t368 == null ?{core::int?} null : self::IntClassExtension|get#property(#t368{self::IntClass}), v == null);
let final self::IntClass? #t369 = v in #t369 == null ?{core::int?} null : self::IntClassExtension|set#property(#t369{self::IntClass}, self::IntClassExtension|get#property(#t369{self::IntClass}).{core::num::+}(1){(core::num) → core::int});
self::expect(n1, let final self::IntClass? #t370 = v in #t370 == null ?{core::int?} null : self::IntClassExtension|get#property(#t370{self::IntClass}), v == null);
let final self::IntClass? #t371 = v in #t371 == null ?{core::int?} null : self::IntClassExtension|set#property(#t371{self::IntClass}, self::IntClassExtension|get#property(#t371{self::IntClass}).{core::num::-}(1){(core::num) → core::int});
self::expect(n0, let final self::IntClass? #t372 = v in #t372 == null ?{core::int?} null : self::IntClassExtension|get#property(#t372{self::IntClass}), v == null);
}
static method expect(dynamic expected, dynamic actual, [dynamic expectNull = #C1]) → dynamic {
if(expectNull as{TypeError,ForDynamic} core::bool*) {
if(expectNull as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool) {
expected = null;
}
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
@@ -1,11 +1,11 @@
// Copyright (c) 2019, 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.
// @dart=2.9
extension Extension on String {
int get noSuchMethod => 42;
void set hashCode(int value) {}
int runtimeType() {}
int runtimeType() => 0;
operator ==(other) => false;
static String toString() => 'Foo';
}
@@ -1,8 +1,7 @@
// @dart = 2.9
extension Extension on String {
int get noSuchMethod => 42;
void set hashCode(int value) {}
int runtimeType() {}
int runtimeType() => 0;
operator ==(other) => false;
static String toString() => 'Foo';
}
@@ -1,10 +1,9 @@
// @dart = 2.9
errors() {}
expect(expected, actual) {}
extension Extension on String {
int get noSuchMethod => 42;
int runtimeType() {}
int runtimeType() => 0;
operator ==(other) => false;
static String toString() => 'Foo';
void set hashCode(int value) {}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -7,7 +7,7 @@ library;
// ^^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:8:7: Error: This extension member conflicts with Object member 'runtimeType'.
// int runtimeType() {}
// int runtimeType() => 0;
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:9:12: Error: This extension member conflicts with Object member '=='.
@@ -40,7 +40,7 @@ library;
import self as self;
import "dart:core" as core;
extension Extension on core::String* {
extension Extension on core::String {
get noSuchMethod = self::Extension|get#noSuchMethod;
method runtimeType = self::Extension|runtimeType;
tearoff runtimeType = self::Extension|get#runtimeType;
@@ -48,33 +48,34 @@ extension Extension on core::String* {
static method toString = self::Extension|toString;
set hashCode = self::Extension|set#hashCode;
}
static method Extension|get#noSuchMethod(lowered final core::String* #this) → core::int*
static method Extension|get#noSuchMethod(lowered final core::String #this) → core::int
return 42;
static method Extension|set#hashCode(lowered final core::String* #this, core::int* value) → void {}
static method Extension|runtimeType(lowered final core::String* #this) → core::int* {}
static method Extension|get#runtimeType(lowered final core::String* #this) → () →* core::int*
return () → core::int* => self::Extension|runtimeType(#this);
static method Extension|==(lowered final core::String* #this, dynamic other) → dynamic
static method Extension|set#hashCode(lowered final core::String #this, core::int value) → void {}
static method Extension|runtimeType(lowered final core::String #this) → core::int
return 0;
static method Extension|get#runtimeType(lowered final core::String #this) → () → core::int
return () → core::int => self::Extension|runtimeType(#this);
static method Extension|==(lowered final core::String #this, dynamic other) → dynamic
return false;
static method Extension|toString() → core::String*
static method Extension|toString() → core::String
return "Foo";
static method main() → dynamic {
core::int* value;
self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} is core::Function*);
core::int value;
self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} is{ForNonNullableByDefault} core::Function);
value = self::Extension|get#noSuchMethod("");
self::Extension|set#hashCode("", 42);
self::expect(true, "".{core::Object::runtimeType}{core::Type*} is core::Type*);
self::expect(true, self::Extension|get#runtimeType("") is core::Function*);
self::expect(true, "".{core::Object::runtimeType}{core::Type} is{ForNonNullableByDefault} core::Type);
self::expect(true, self::Extension|get#runtimeType("") is{ForNonNullableByDefault} core::Function);
value = self::Extension|runtimeType("");
self::expect(true, "" =={core::String::==}{(core::Object*) →* core::bool*} "");
self::expect(true, "" =={core::String::==}{(core::Object) → core::bool} "");
self::expect("Foo", self::Extension|toString());
}
static method errors() → dynamic {
core::int* value;
core::int value;
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:27:14: Error: A value of type 'dynamic Function(Invocation)' can't be assigned to a variable of type 'int'.
- 'Invocation' is from 'dart:core'.
value = \"\".noSuchMethod;
^" in "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} as{TypeError} core::int*;
^" in "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} as{TypeError,ForNonNullableByDefault} core::int;
invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:28:6: Error: The setter 'hashCode' isn't defined for the class 'String'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'hashCode'.
\"\".hashCode = 42;
@@ -82,10 +83,10 @@ Try correcting the name to the name of an existing setter, or defining a setter
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:29:14: Error: A value of type 'Type' can't be assigned to a variable of type 'int'.
- 'Type' is from 'dart:core'.
value = \"\".runtimeType;
^" in "".{core::Object::runtimeType}{core::Type*} as{TypeError} core::int*;
^" in "".{core::Object::runtimeType}{core::Type} as{TypeError,ForNonNullableByDefault} core::int;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -7,7 +7,7 @@ library;
// ^^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:8:7: Error: This extension member conflicts with Object member 'runtimeType'.
// int runtimeType() {}
// int runtimeType() => 0;
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:9:12: Error: This extension member conflicts with Object member '=='.
@@ -40,7 +40,7 @@ library;
import self as self;
import "dart:core" as core;
extension Extension on core::String* {
extension Extension on core::String {
get noSuchMethod = self::Extension|get#noSuchMethod;
method runtimeType = self::Extension|runtimeType;
tearoff runtimeType = self::Extension|get#runtimeType;
@@ -48,33 +48,34 @@ extension Extension on core::String* {
static method toString = self::Extension|toString;
set hashCode = self::Extension|set#hashCode;
}
static method Extension|get#noSuchMethod(lowered final core::String* #this) → core::int*
static method Extension|get#noSuchMethod(lowered final core::String #this) → core::int
return 42;
static method Extension|set#hashCode(lowered final core::String* #this, core::int* value) → void {}
static method Extension|runtimeType(lowered final core::String* #this) → core::int* {}
static method Extension|get#runtimeType(lowered final core::String* #this) → () →* core::int*
return () → core::int* => self::Extension|runtimeType(#this);
static method Extension|==(lowered final core::String* #this, dynamic other) → dynamic
static method Extension|set#hashCode(lowered final core::String #this, core::int value) → void {}
static method Extension|runtimeType(lowered final core::String #this) → core::int
return 0;
static method Extension|get#runtimeType(lowered final core::String #this) → () → core::int
return () → core::int => self::Extension|runtimeType(#this);
static method Extension|==(lowered final core::String #this, dynamic other) → dynamic
return false;
static method Extension|toString() → core::String*
static method Extension|toString() → core::String
return "Foo";
static method main() → dynamic {
core::int* value;
self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} is core::Function*);
core::int value;
self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} is{ForNonNullableByDefault} core::Function);
value = self::Extension|get#noSuchMethod("");
self::Extension|set#hashCode("", 42);
self::expect(true, "".{core::Object::runtimeType}{core::Type*} is core::Type*);
self::expect(true, self::Extension|get#runtimeType("") is core::Function*);
self::expect(true, "".{core::Object::runtimeType}{core::Type} is{ForNonNullableByDefault} core::Type);
self::expect(true, self::Extension|get#runtimeType("") is{ForNonNullableByDefault} core::Function);
value = self::Extension|runtimeType("");
self::expect(true, "" =={core::String::==}{(core::Object*) →* core::bool*} "");
self::expect(true, "" =={core::String::==}{(core::Object) → core::bool} "");
self::expect("Foo", self::Extension|toString());
}
static method errors() → dynamic {
core::int* value;
core::int value;
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:27:14: Error: A value of type 'dynamic Function(Invocation)' can't be assigned to a variable of type 'int'.
- 'Invocation' is from 'dart:core'.
value = \"\".noSuchMethod;
^" in "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} as{TypeError} core::int*;
^" in "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} as{TypeError,ForNonNullableByDefault} core::int;
invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:28:6: Error: The setter 'hashCode' isn't defined for the class 'String'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'hashCode'.
\"\".hashCode = 42;
@@ -82,10 +83,10 @@ Try correcting the name to the name of an existing setter, or defining a setter
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:29:14: Error: A value of type 'Type' can't be assigned to a variable of type 'int'.
- 'Type' is from 'dart:core'.
value = \"\".runtimeType;
^" in "".{core::Object::runtimeType}{core::Type*} as{TypeError} core::int*;
^" in "".{core::Object::runtimeType}{core::Type} as{TypeError,ForNonNullableByDefault} core::int;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -7,7 +7,7 @@ library;
// ^^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:8:7: Error: This extension member conflicts with Object member 'runtimeType'.
// int runtimeType() {}
// int runtimeType() => 0;
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:9:12: Error: This extension member conflicts with Object member '=='.
@@ -25,7 +25,7 @@ library;
import self as self;
import "dart:core" as core;
extension Extension on core::String* {
extension Extension on core::String {
get noSuchMethod = self::Extension|get#noSuchMethod;
method runtimeType = self::Extension|runtimeType;
tearoff runtimeType = self::Extension|get#runtimeType;
@@ -33,17 +33,17 @@ extension Extension on core::String* {
static method toString = self::Extension|toString;
set hashCode = self::Extension|set#hashCode;
}
static method Extension|get#noSuchMethod(lowered final core::String* #this) → core::int*
static method Extension|get#noSuchMethod(lowered final core::String #this) → core::int
;
static method Extension|set#hashCode(lowered final core::String* #this, core::int* value) → void
static method Extension|set#hashCode(lowered final core::String #this, core::int value) → void
;
static method Extension|runtimeType(lowered final core::String* #this) → core::int*
static method Extension|runtimeType(lowered final core::String #this) → core::int
;
static method Extension|get#runtimeType(lowered final core::String* #this) → () →* core::int*
return () → core::int* => self::Extension|runtimeType(#this);
static method Extension|==(lowered final core::String* #this, dynamic other) → dynamic
static method Extension|get#runtimeType(lowered final core::String #this) → () → core::int
return () → core::int => self::Extension|runtimeType(#this);
static method Extension|==(lowered final core::String #this, dynamic other) → dynamic
;
static method Extension|toString() → core::String*
static method Extension|toString() → core::String
;
static method main() → dynamic
;
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -7,7 +7,7 @@ library;
// ^^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:8:7: Error: This extension member conflicts with Object member 'runtimeType'.
// int runtimeType() {}
// int runtimeType() => 0;
// ^^^^^^^^^^^
//
// pkg/front_end/testcases/extensions/conflict_with_object.dart:9:12: Error: This extension member conflicts with Object member '=='.
@@ -40,7 +40,7 @@ library;
import self as self;
import "dart:core" as core;
extension Extension on core::String* {
extension Extension on core::String {
get noSuchMethod = self::Extension|get#noSuchMethod;
method runtimeType = self::Extension|runtimeType;
tearoff runtimeType = self::Extension|get#runtimeType;
@@ -48,33 +48,34 @@ extension Extension on core::String* {
static method toString = self::Extension|toString;
set hashCode = self::Extension|set#hashCode;
}
static method Extension|get#noSuchMethod(lowered final core::String* #this) → core::int*
static method Extension|get#noSuchMethod(lowered final core::String #this) → core::int
return 42;
static method Extension|set#hashCode(lowered final core::String* #this, core::int* value) → void {}
static method Extension|runtimeType(lowered final core::String* #this) → core::int* {}
static method Extension|get#runtimeType(lowered final core::String* #this) → () →* core::int*
return () → core::int* => self::Extension|runtimeType(#this);
static method Extension|==(lowered final core::String* #this, dynamic other) → dynamic
static method Extension|set#hashCode(lowered final core::String #this, core::int value) → void {}
static method Extension|runtimeType(lowered final core::String #this) → core::int
return 0;
static method Extension|get#runtimeType(lowered final core::String #this) → () → core::int
return () → core::int => self::Extension|runtimeType(#this);
static method Extension|==(lowered final core::String #this, dynamic other) → dynamic
return false;
static method Extension|toString() → core::String*
static method Extension|toString() → core::String
return "Foo";
static method main() → dynamic {
core::int* value;
self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} is core::Function*);
core::int value;
self::expect(true, "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} is{ForNonNullableByDefault} core::Function);
value = self::Extension|get#noSuchMethod("");
self::Extension|set#hashCode("", 42);
self::expect(true, "".{core::Object::runtimeType}{core::Type*} is core::Type*);
self::expect(true, self::Extension|get#runtimeType("") is core::Function*);
self::expect(true, "".{core::Object::runtimeType}{core::Type} is{ForNonNullableByDefault} core::Type);
self::expect(true, self::Extension|get#runtimeType("") is{ForNonNullableByDefault} core::Function);
value = self::Extension|runtimeType("");
self::expect(true, "" =={core::String::==}{(core::Object*) →* core::bool*} "");
self::expect(true, "" =={core::String::==}{(core::Object) → core::bool} "");
self::expect("Foo", self::Extension|toString());
}
static method errors() → dynamic {
core::int* value;
core::int value;
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:27:14: Error: A value of type 'dynamic Function(Invocation)' can't be assigned to a variable of type 'int'.
- 'Invocation' is from 'dart:core'.
value = \"\".noSuchMethod;
^" in "".{core::Object::noSuchMethod}{(core::Invocation*) →* dynamic} as{TypeError} core::int*;
^" in "".{core::Object::noSuchMethod}{(core::Invocation) → dynamic} as{TypeError,ForNonNullableByDefault} core::int;
invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:28:6: Error: The setter 'hashCode' isn't defined for the class 'String'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'hashCode'.
\"\".hashCode = 42;
@@ -82,10 +83,10 @@ Try correcting the name to the name of an existing setter, or defining a setter
value = invalid-expression "pkg/front_end/testcases/extensions/conflict_with_object.dart:29:14: Error: A value of type 'Type' can't be assigned to a variable of type 'int'.
- 'Type' is from 'dart:core'.
value = \"\".runtimeType;
^" in "".{core::Object::runtimeType}{core::Type*} as{TypeError} core::int*;
^" in "".{core::Object::runtimeType}{core::Type} as{TypeError,ForNonNullableByDefault} core::int;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
// @dart=2.9
class Class1 {
}
class Class2 {}
@@ -1,4 +1,3 @@
// @dart = 2.9
class Class1 {}
class Class2 {}
@@ -1,4 +1,3 @@
// @dart = 2.9
class Class1 {}
class Class2 {}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,62 +26,42 @@ import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
synthetic constructor •() → self::Class1*
synthetic constructor •() → self::Class1
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class2 extends core::Object {
synthetic constructor •() → self::Class2*
synthetic constructor •() → self::Class2
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension DuplicateExtensionName on self::Class1* {
extension DuplicateExtensionName on self::Class1 {
method uniqueMethod1 = self::DuplicateExtensionName|uniqueMethod1;
tearoff uniqueMethod1 = self::DuplicateExtensionName|get#uniqueMethod1;
method duplicateMethodName2 = self::DuplicateExtensionName|duplicateMethodName2;
tearoff duplicateMethodName2 = self::DuplicateExtensionName|get#duplicateMethodName2;
}
extension UniqueExtensionName on self::Class1* {
extension UniqueExtensionName on self::Class1 {
method duplicateMethodName1 = self::UniqueExtensionName|duplicateMethodName1;
tearoff duplicateMethodName1 = self::UniqueExtensionName|get#duplicateMethodName1;
}
static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1* #this) → dynamic {}
static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1* #this) → () →* dynamic
static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1 #this) → dynamic {}
static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|uniqueMethod1(#this);
static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1* #this) → dynamic
static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1 #this) → dynamic
return 1;
static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1* #this) → () →* dynamic
static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|duplicateMethodName2(#this);
static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1* #this) → dynamic
static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1 #this) → dynamic
return 1;
static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1* #this) → () →* dynamic
static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::UniqueExtensionName|duplicateMethodName1(#this);
static method main() → dynamic {
self::Class1* c1 = new self::Class1::•();
self::Class1 c1 = new self::Class1::•();
self::DuplicateExtensionName|uniqueMethod1(c1);
}
static method errors() → dynamic {
self::Class2* c2 = new self::Class2::•();
self::Class2 c2 = new self::Class2::•();
invalid-expression "pkg/front_end/testcases/extensions/conflicts.dart:31:6: Error: The method 'uniqueMethod2' isn't defined for the class 'Class2'.
- 'Class2' is from 'pkg/front_end/testcases/extensions/conflicts.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'uniqueMethod2'.
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,62 +26,42 @@ import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
synthetic constructor •() → self::Class1*
synthetic constructor •() → self::Class1
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class2 extends core::Object {
synthetic constructor •() → self::Class2*
synthetic constructor •() → self::Class2
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension DuplicateExtensionName on self::Class1* {
extension DuplicateExtensionName on self::Class1 {
method uniqueMethod1 = self::DuplicateExtensionName|uniqueMethod1;
tearoff uniqueMethod1 = self::DuplicateExtensionName|get#uniqueMethod1;
method duplicateMethodName2 = self::DuplicateExtensionName|duplicateMethodName2;
tearoff duplicateMethodName2 = self::DuplicateExtensionName|get#duplicateMethodName2;
}
extension UniqueExtensionName on self::Class1* {
extension UniqueExtensionName on self::Class1 {
method duplicateMethodName1 = self::UniqueExtensionName|duplicateMethodName1;
tearoff duplicateMethodName1 = self::UniqueExtensionName|get#duplicateMethodName1;
}
static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1* #this) → dynamic {}
static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1* #this) → () →* dynamic
static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1 #this) → dynamic {}
static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|uniqueMethod1(#this);
static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1* #this) → dynamic
static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1 #this) → dynamic
return 1;
static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1* #this) → () →* dynamic
static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|duplicateMethodName2(#this);
static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1* #this) → dynamic
static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1 #this) → dynamic
return 1;
static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1* #this) → () →* dynamic
static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::UniqueExtensionName|duplicateMethodName1(#this);
static method main() → dynamic {
self::Class1* c1 = new self::Class1::•();
self::Class1 c1 = new self::Class1::•();
self::DuplicateExtensionName|uniqueMethod1(c1);
}
static method errors() → dynamic {
self::Class2* c2 = new self::Class2::•();
self::Class2 c2 = new self::Class2::•();
invalid-expression "pkg/front_end/testcases/extensions/conflicts.dart:31:6: Error: The method 'uniqueMethod2' isn't defined for the class 'Class2'.
- 'Class2' is from 'pkg/front_end/testcases/extensions/conflicts.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'uniqueMethod2'.
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -20,54 +20,34 @@ import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
synthetic constructor •() → self::Class1*
synthetic constructor •() → self::Class1
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class2 extends core::Object {
synthetic constructor •() → self::Class2*
synthetic constructor •() → self::Class2
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension DuplicateExtensionName on self::Class1* {
extension DuplicateExtensionName on self::Class1 {
method uniqueMethod1 = self::DuplicateExtensionName|uniqueMethod1;
tearoff uniqueMethod1 = self::DuplicateExtensionName|get#uniqueMethod1;
method duplicateMethodName2 = self::DuplicateExtensionName|duplicateMethodName2;
tearoff duplicateMethodName2 = self::DuplicateExtensionName|get#duplicateMethodName2;
}
extension UniqueExtensionName on self::Class1* {
extension UniqueExtensionName on self::Class1 {
method duplicateMethodName1 = self::UniqueExtensionName|duplicateMethodName1;
tearoff duplicateMethodName1 = self::UniqueExtensionName|get#duplicateMethodName1;
}
static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1* #this) → dynamic
static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1 #this) → dynamic
;
static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1* #this) → () →* dynamic
static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|uniqueMethod1(#this);
static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1* #this) → dynamic
static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1 #this) → dynamic
;
static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1* #this) → () →* dynamic
static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|duplicateMethodName2(#this);
static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1* #this) → dynamic
static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1 #this) → dynamic
;
static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1* #this) → () →* dynamic
static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::UniqueExtensionName|duplicateMethodName1(#this);
static method main() → dynamic
;
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -26,62 +26,42 @@ import self as self;
import "dart:core" as core;
class Class1 extends core::Object {
synthetic constructor •() → self::Class1*
synthetic constructor •() → self::Class1
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class Class2 extends core::Object {
synthetic constructor •() → self::Class2*
synthetic constructor •() → self::Class2
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension DuplicateExtensionName on self::Class1* {
extension DuplicateExtensionName on self::Class1 {
method uniqueMethod1 = self::DuplicateExtensionName|uniqueMethod1;
tearoff uniqueMethod1 = self::DuplicateExtensionName|get#uniqueMethod1;
method duplicateMethodName2 = self::DuplicateExtensionName|duplicateMethodName2;
tearoff duplicateMethodName2 = self::DuplicateExtensionName|get#duplicateMethodName2;
}
extension UniqueExtensionName on self::Class1* {
extension UniqueExtensionName on self::Class1 {
method duplicateMethodName1 = self::UniqueExtensionName|duplicateMethodName1;
tearoff duplicateMethodName1 = self::UniqueExtensionName|get#duplicateMethodName1;
}
static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1* #this) → dynamic {}
static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1* #this) → () →* dynamic
static method DuplicateExtensionName|uniqueMethod1(lowered final self::Class1 #this) → dynamic {}
static method DuplicateExtensionName|get#uniqueMethod1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|uniqueMethod1(#this);
static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1* #this) → dynamic
static method DuplicateExtensionName|duplicateMethodName2(lowered final self::Class1 #this) → dynamic
return 1;
static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1* #this) → () →* dynamic
static method DuplicateExtensionName|get#duplicateMethodName2(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::DuplicateExtensionName|duplicateMethodName2(#this);
static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1* #this) → dynamic
static method UniqueExtensionName|duplicateMethodName1(lowered final self::Class1 #this) → dynamic
return 1;
static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1* #this) → () →* dynamic
static method UniqueExtensionName|get#duplicateMethodName1(lowered final self::Class1 #this) → () → dynamic
return () → dynamic => self::UniqueExtensionName|duplicateMethodName1(#this);
static method main() → dynamic {
self::Class1* c1 = new self::Class1::•();
self::Class1 c1 = new self::Class1::•();
self::DuplicateExtensionName|uniqueMethod1(c1);
}
static method errors() → dynamic {
self::Class2* c2 = new self::Class2::•();
self::Class2 c2 = new self::Class2::•();
invalid-expression "pkg/front_end/testcases/extensions/conflicts.dart:31:6: Error: The method 'uniqueMethod2' isn't defined for the class 'Class2'.
- 'Class2' is from 'pkg/front_end/testcases/extensions/conflicts.dart'.
Try correcting the name to the name of an existing method, or defining a method named 'uniqueMethod2'.
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
// @dart=2.9
class Class {}
extension Extension on Class {
@@ -1,4 +1,3 @@
// @dart = 2.9
class Class {}
extension Extension on Class {
@@ -1,4 +1,3 @@
// @dart = 2.9
class Class {}
expect(expected, actual) {}
@@ -1,23 +1,13 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method method0 = self::Extension|method0;
tearoff method0 = self::Extension|get#method0;
method method1 = self::Extension|method1;
@@ -28,41 +18,41 @@ extension Extension on self::Class* {
tearoff method3 = self::Extension|get#method3;
static method staticMethod = self::Extension|staticMethod;
}
static method Extension|method0(lowered final self::Class* #this, [dynamic a = #C1]) → dynamic
static method Extension|method0(lowered final self::Class #this, [dynamic a = #C1]) → dynamic
return a;
static method Extension|get#method0(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#method0(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C1]) → dynamic => self::Extension|method0(#this, a);
static method Extension|method1(lowered final self::Class* #this, [dynamic a = #C2]) → dynamic
static method Extension|method1(lowered final self::Class #this, [dynamic a = #C2]) → dynamic
return a;
static method Extension|get#method1(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#method1(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C2]) → dynamic => self::Extension|method1(#this, a);
static method Extension|method2(lowered final self::Class* #this, {dynamic b = #C3}) → dynamic
static method Extension|method2(lowered final self::Class #this, {dynamic b = #C3}) → dynamic
return b;
static method Extension|get#method2(lowered final self::Class* #this) → ({b: dynamic}) →* dynamic
static method Extension|get#method2(lowered final self::Class #this) → ({b: dynamic}) → dynamic
return ({dynamic b = #C3}) → dynamic => self::Extension|method2(#this, b: b);
static method Extension|method3(lowered final self::Class* #this, {dynamic c = #C4}) → dynamic
static method Extension|method3(lowered final self::Class #this, {dynamic c = #C4}) → dynamic
return c{dynamic}.call();
static method Extension|get#method3(lowered final self::Class* #this) → ({c: dynamic}) →* dynamic
static method Extension|get#method3(lowered final self::Class #this) → ({c: dynamic}) → dynamic
return ({dynamic c = #C4}) → dynamic => self::Extension|method3(#this, c: c);
static method Extension|staticMethod() → dynamic
return 123;
static method main() → dynamic {
self::Class* c = new self::Class::•();
([dynamic]) →* dynamic tearOff0 = self::Extension|get#method0(c);
self::expect(0, tearOff0(0){([dynamic]) →* dynamic});
self::expect(null, tearOff0(){([dynamic]) →* dynamic});
([dynamic]) →* dynamic tearOff1 = self::Extension|get#method1(c);
self::expect(0, tearOff1(0){([dynamic]) →* dynamic});
self::expect(42, tearOff1(){([dynamic]) →* dynamic});
({b: dynamic}) →* dynamic tearOff2 = self::Extension|get#method2(c);
self::expect(0, tearOff2(b: 0){({b: dynamic}) →* dynamic});
self::expect(87, tearOff2(){({b: dynamic}) →* dynamic});
({c: dynamic}) →* dynamic tearOff3 = self::Extension|get#method3(c);
self::expect(0, tearOff3(c: () → core::int* => 0){({c: dynamic}) →* dynamic});
self::expect(123, tearOff3(){({c: dynamic}) →* dynamic});
self::Class c = new self::Class::•();
([dynamic]) → dynamic tearOff0 = self::Extension|get#method0(c);
self::expect(0, tearOff0(0){([dynamic]) → dynamic});
self::expect(null, tearOff0(){([dynamic]) → dynamic});
([dynamic]) → dynamic tearOff1 = self::Extension|get#method1(c);
self::expect(0, tearOff1(0){([dynamic]) → dynamic});
self::expect(42, tearOff1(){([dynamic]) → dynamic});
({b: dynamic}) → dynamic tearOff2 = self::Extension|get#method2(c);
self::expect(0, tearOff2(b: 0){({b: dynamic}) → dynamic});
self::expect(87, tearOff2(){({b: dynamic}) → dynamic});
({c: dynamic}) → dynamic tearOff3 = self::Extension|get#method3(c);
self::expect(0, tearOff3(c: () → core::int => 0){({c: dynamic}) → dynamic});
self::expect(123, tearOff3(){({c: dynamic}) → dynamic});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
@@ -1,23 +1,13 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method method0 = self::Extension|method0;
tearoff method0 = self::Extension|get#method0;
method method1 = self::Extension|method1;
@@ -28,41 +18,41 @@ extension Extension on self::Class* {
tearoff method3 = self::Extension|get#method3;
static method staticMethod = self::Extension|staticMethod;
}
static method Extension|method0(lowered final self::Class* #this, [dynamic a = #C1]) → dynamic
static method Extension|method0(lowered final self::Class #this, [dynamic a = #C1]) → dynamic
return a;
static method Extension|get#method0(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#method0(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C1]) → dynamic => self::Extension|method0(#this, a);
static method Extension|method1(lowered final self::Class* #this, [dynamic a = #C2]) → dynamic
static method Extension|method1(lowered final self::Class #this, [dynamic a = #C2]) → dynamic
return a;
static method Extension|get#method1(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#method1(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C2]) → dynamic => self::Extension|method1(#this, a);
static method Extension|method2(lowered final self::Class* #this, {dynamic b = #C3}) → dynamic
static method Extension|method2(lowered final self::Class #this, {dynamic b = #C3}) → dynamic
return b;
static method Extension|get#method2(lowered final self::Class* #this) → ({b: dynamic}) →* dynamic
static method Extension|get#method2(lowered final self::Class #this) → ({b: dynamic}) → dynamic
return ({dynamic b = #C3}) → dynamic => self::Extension|method2(#this, b: b);
static method Extension|method3(lowered final self::Class* #this, {dynamic c = #C4}) → dynamic
static method Extension|method3(lowered final self::Class #this, {dynamic c = #C4}) → dynamic
return c{dynamic}.call();
static method Extension|get#method3(lowered final self::Class* #this) → ({c: dynamic}) →* dynamic
static method Extension|get#method3(lowered final self::Class #this) → ({c: dynamic}) → dynamic
return ({dynamic c = #C4}) → dynamic => self::Extension|method3(#this, c: c);
static method Extension|staticMethod() → dynamic
return 123;
static method main() → dynamic {
self::Class* c = new self::Class::•();
([dynamic]) →* dynamic tearOff0 = self::Extension|get#method0(c);
self::expect(0, tearOff0(0){([dynamic]) →* dynamic});
self::expect(null, tearOff0(){([dynamic]) →* dynamic});
([dynamic]) →* dynamic tearOff1 = self::Extension|get#method1(c);
self::expect(0, tearOff1(0){([dynamic]) →* dynamic});
self::expect(42, tearOff1(){([dynamic]) →* dynamic});
({b: dynamic}) →* dynamic tearOff2 = self::Extension|get#method2(c);
self::expect(0, tearOff2(b: 0){({b: dynamic}) →* dynamic});
self::expect(87, tearOff2(){({b: dynamic}) →* dynamic});
({c: dynamic}) →* dynamic tearOff3 = self::Extension|get#method3(c);
self::expect(0, tearOff3(c: () → core::int* => 0){({c: dynamic}) →* dynamic});
self::expect(123, tearOff3(){({c: dynamic}) →* dynamic});
self::Class c = new self::Class::•();
([dynamic]) → dynamic tearOff0 = self::Extension|get#method0(c);
self::expect(0, tearOff0(0){([dynamic]) → dynamic});
self::expect(null, tearOff0(){([dynamic]) → dynamic});
([dynamic]) → dynamic tearOff1 = self::Extension|get#method1(c);
self::expect(0, tearOff1(0){([dynamic]) → dynamic});
self::expect(42, tearOff1(){([dynamic]) → dynamic});
({b: dynamic}) → dynamic tearOff2 = self::Extension|get#method2(c);
self::expect(0, tearOff2(b: 0){({b: dynamic}) → dynamic});
self::expect(87, tearOff2(){({b: dynamic}) → dynamic});
({c: dynamic}) → dynamic tearOff3 = self::Extension|get#method3(c);
self::expect(0, tearOff3(c: () → core::int => 0){({c: dynamic}) → dynamic});
self::expect(123, tearOff3(){({c: dynamic}) → dynamic});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
@@ -1,22 +1,12 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method method0 = self::Extension|method0;
tearoff method0 = self::Extension|get#method0;
method method1 = self::Extension|method1;
@@ -27,21 +17,21 @@ extension Extension on self::Class* {
tearoff method3 = self::Extension|get#method3;
static method staticMethod = self::Extension|staticMethod;
}
static method Extension|method0(lowered final self::Class* #this, [dynamic a]) → dynamic
static method Extension|method0(lowered final self::Class #this, [dynamic a]) → dynamic
;
static method Extension|get#method0(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#method0(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a]) → dynamic => self::Extension|method0(#this, a);
static method Extension|method1(lowered final self::Class* #this, [has-declared-initializer dynamic a]) → dynamic
static method Extension|method1(lowered final self::Class #this, [has-declared-initializer dynamic a]) → dynamic
;
static method Extension|get#method1(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#method1(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a]) → dynamic => self::Extension|method1(#this, a);
static method Extension|method2(lowered final self::Class* #this, {has-declared-initializer dynamic b}) → dynamic
static method Extension|method2(lowered final self::Class #this, {has-declared-initializer dynamic b}) → dynamic
;
static method Extension|get#method2(lowered final self::Class* #this) → ({b: dynamic}) →* dynamic
static method Extension|get#method2(lowered final self::Class #this) → ({b: dynamic}) → dynamic
return ({dynamic b}) → dynamic => self::Extension|method2(#this, b: b);
static method Extension|method3(lowered final self::Class* #this, {has-declared-initializer dynamic c}) → dynamic
static method Extension|method3(lowered final self::Class #this, {has-declared-initializer dynamic c}) → dynamic
;
static method Extension|get#method3(lowered final self::Class* #this) → ({c: dynamic}) →* dynamic
static method Extension|get#method3(lowered final self::Class #this) → ({c: dynamic}) → dynamic
return ({dynamic c}) → dynamic => self::Extension|method3(#this, c: c);
static method Extension|staticMethod() → dynamic
;
@@ -1,23 +1,13 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method method0 = self::Extension|method0;
tearoff method0 = self::Extension|get#method0;
method method1 = self::Extension|method1;
@@ -28,41 +18,41 @@ extension Extension on self::Class* {
tearoff method3 = self::Extension|get#method3;
static method staticMethod = self::Extension|staticMethod;
}
static method Extension|method0(lowered final self::Class* #this, [dynamic a = #C1]) → dynamic
static method Extension|method0(lowered final self::Class #this, [dynamic a = #C1]) → dynamic
return a;
static method Extension|get#method0(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#method0(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C1]) → dynamic => self::Extension|method0(#this, a);
static method Extension|method1(lowered final self::Class* #this, [dynamic a = #C2]) → dynamic
static method Extension|method1(lowered final self::Class #this, [dynamic a = #C2]) → dynamic
return a;
static method Extension|get#method1(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#method1(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic a = #C2]) → dynamic => self::Extension|method1(#this, a);
static method Extension|method2(lowered final self::Class* #this, {dynamic b = #C3}) → dynamic
static method Extension|method2(lowered final self::Class #this, {dynamic b = #C3}) → dynamic
return b;
static method Extension|get#method2(lowered final self::Class* #this) → ({b: dynamic}) →* dynamic
static method Extension|get#method2(lowered final self::Class #this) → ({b: dynamic}) → dynamic
return ({dynamic b = #C3}) → dynamic => self::Extension|method2(#this, b: b);
static method Extension|method3(lowered final self::Class* #this, {dynamic c = #C4}) → dynamic
static method Extension|method3(lowered final self::Class #this, {dynamic c = #C4}) → dynamic
return c{dynamic}.call();
static method Extension|get#method3(lowered final self::Class* #this) → ({c: dynamic}) →* dynamic
static method Extension|get#method3(lowered final self::Class #this) → ({c: dynamic}) → dynamic
return ({dynamic c = #C4}) → dynamic => self::Extension|method3(#this, c: c);
static method Extension|staticMethod() → dynamic
return 123;
static method main() → dynamic {
self::Class* c = new self::Class::•();
([dynamic]) →* dynamic tearOff0 = self::Extension|get#method0(c);
self::expect(0, tearOff0(0){([dynamic]) →* dynamic});
self::expect(null, tearOff0(){([dynamic]) →* dynamic});
([dynamic]) →* dynamic tearOff1 = self::Extension|get#method1(c);
self::expect(0, tearOff1(0){([dynamic]) →* dynamic});
self::expect(42, tearOff1(){([dynamic]) →* dynamic});
({b: dynamic}) →* dynamic tearOff2 = self::Extension|get#method2(c);
self::expect(0, tearOff2(b: 0){({b: dynamic}) →* dynamic});
self::expect(87, tearOff2(){({b: dynamic}) →* dynamic});
({c: dynamic}) →* dynamic tearOff3 = self::Extension|get#method3(c);
self::expect(0, tearOff3(c: () → core::int* => 0){({c: dynamic}) →* dynamic});
self::expect(123, tearOff3(){({c: dynamic}) →* dynamic});
self::Class c = new self::Class::•();
([dynamic]) → dynamic tearOff0 = self::Extension|get#method0(c);
self::expect(0, tearOff0(0){([dynamic]) → dynamic});
self::expect(null, tearOff0(){([dynamic]) → dynamic});
([dynamic]) → dynamic tearOff1 = self::Extension|get#method1(c);
self::expect(0, tearOff1(0){([dynamic]) → dynamic});
self::expect(42, tearOff1(){([dynamic]) → dynamic});
({b: dynamic}) → dynamic tearOff2 = self::Extension|get#method2(c);
self::expect(0, tearOff2(b: 0){({b: dynamic}) → dynamic});
self::expect(87, tearOff2(){({b: dynamic}) → dynamic});
({c: dynamic}) → dynamic tearOff3 = self::Extension|get#method3(c);
self::expect(0, tearOff3(c: () → core::int => 0){({c: dynamic}) → dynamic});
self::expect(123, tearOff3(){({c: dynamic}) → dynamic});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
// @dart=2.9
import 'deferred_explicit_access_lib.dart' deferred as prefix;
main() async {
@@ -1,4 +1,3 @@
// @dart = 2.9
import 'deferred_explicit_access_lib.dart' deferred as prefix;
main() async {}
@@ -1,4 +1,3 @@
// @dart = 2.9
import 'deferred_explicit_access_lib.dart' deferred as prefix;
expect(expected, actual) {}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,7 +17,7 @@ static method main() → dynamic async /* futureValueType= dynamic */ {
await LoadLibrary(prefix);
self::expect(0, let final dynamic #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
self::expect(0, let final dynamic #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
self::expect(42, let final dynamic #t3 = CheckLibraryIsLoaded(prefix) in let final core::int* #t4 = 0 in let final core::int* #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
self::expect(42, let final dynamic #t3 = CheckLibraryIsLoaded(prefix) in let final core::int #t4 = 0 in let final core::int #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
self::expect(84, let final dynamic #t7 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
self::expect(85, let final dynamic #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
self::expect(42, let final dynamic #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
@@ -25,15 +25,15 @@ static method main() → dynamic async /* futureValueType= dynamic */ {
self::expect(87, let final dynamic #t11 = CheckLibraryIsLoaded(prefix) in def::Extension|staticMethod());
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
library;
library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
extension Extension on core::int* {
extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -43,27 +43,27 @@ extension Extension on core::int* {
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
static field core::int* Extension|staticField = 0;
static field core::int* topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int*
static field core::int Extension|staticField = 0;
static field core::int topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int
return def::Extension|staticField;
static set Extension|staticProperty(core::int* value) → void {
static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|staticMethod() → core::int*
static method Extension|staticMethod() → core::int
return def::Extension|staticField;
static method Extension|get#property(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
static method Extension|get#property(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|method(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
return () → core::int* => def::Extension|method(#this);
static get topLevelProperty() → core::int*
static method Extension|method(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|get#method(lowered final core::int #this) → () → core::int
return () → core::int => def::Extension|method(#this);
static get topLevelProperty() → core::int
return def::Extension|staticField;
static set topLevelProperty(core::int* value) → void {
static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -17,7 +17,7 @@ static method main() → dynamic async /* futureValueType= dynamic */ {
await LoadLibrary(prefix);
self::expect(0, let final dynamic #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
self::expect(0, let final dynamic #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
self::expect(42, let final dynamic #t3 = CheckLibraryIsLoaded(prefix) in let final core::int* #t4 = 0 in let final core::int* #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
self::expect(42, let final dynamic #t3 = CheckLibraryIsLoaded(prefix) in let final core::int #t4 = 0 in let final core::int #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
self::expect(84, let final dynamic #t7 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
self::expect(85, let final dynamic #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
self::expect(42, let final dynamic #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
@@ -25,15 +25,15 @@ static method main() → dynamic async /* futureValueType= dynamic */ {
self::expect(87, let final dynamic #t11 = CheckLibraryIsLoaded(prefix) in def::Extension|staticMethod());
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
library;
library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
extension Extension on core::int* {
extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -43,27 +43,27 @@ extension Extension on core::int* {
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
static field core::int* Extension|staticField = 0;
static field core::int* topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int*
static field core::int Extension|staticField = 0;
static field core::int topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int
return def::Extension|staticField;
static set Extension|staticProperty(core::int* value) → void {
static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|staticMethod() → core::int*
static method Extension|staticMethod() → core::int
return def::Extension|staticField;
static method Extension|get#property(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
static method Extension|get#property(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|method(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
return () → core::int* => def::Extension|method(#this);
static get topLevelProperty() → core::int*
static method Extension|method(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|get#method(lowered final core::int #this) → () → core::int
return () → core::int => def::Extension|method(#this);
static get topLevelProperty() → core::int
return def::Extension|staticField;
static set topLevelProperty(core::int* value) → void {
static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -16,11 +16,11 @@ static method main() → dynamic async
static method expect(dynamic expected, dynamic actual) → dynamic
;
library;
library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;
extension Extension on core::int* {
extension Extension on core::int {
static field staticField = self2::Extension|staticField;
static get staticProperty = get self2::Extension|staticProperty;
static method staticMethod = self2::Extension|staticMethod;
@@ -30,25 +30,25 @@ extension Extension on core::int* {
static set staticProperty = set self2::Extension|staticProperty;
set property = self2::Extension|set#property;
}
static field core::int* Extension|staticField;
static field core::int* topLevelField;
static get Extension|staticProperty() → core::int*
static field core::int Extension|staticField;
static field core::int topLevelField;
static get Extension|staticProperty() → core::int
;
static set Extension|staticProperty(core::int* value) → void
static set Extension|staticProperty(core::int value) → void
;
static method Extension|staticMethod() → core::int*
static method Extension|staticMethod() → core::int
;
static method Extension|get#property(lowered final core::int* #this) → core::int*
static method Extension|get#property(lowered final core::int #this) → core::int
;
static method Extension|set#property(lowered final core::int* #this, core::int* value) → void
static method Extension|set#property(lowered final core::int #this, core::int value) → void
;
static method Extension|method(lowered final core::int* #this) → core::int*
static method Extension|method(lowered final core::int #this) → core::int
;
static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
return () → core::int* => self2::Extension|method(#this);
static get topLevelProperty() → core::int*
static method Extension|get#method(lowered final core::int #this) → () → core::int
return () → core::int => self2::Extension|method(#this);
static get topLevelProperty() → core::int
;
static set topLevelProperty(core::int* value) → void
static set topLevelProperty(core::int value) → void
;
static method topLevelMethod() → dynamic
;
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
@@ -15,12 +15,12 @@ import "deferred_explicit_access_lib.dart" as def;
import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix;
static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
core::bool* :is_sync = false;
dynamic :return_value;
(dynamic) →* dynamic :async_op_then;
(core::Object*, core::StackTrace*) →* dynamic :async_op_error;
core::int* :await_jump_var = 0;
(dynamic) → dynamic :async_op_then;
(core::Object, core::StackTrace) → dynamic :async_op_error;
core::int :await_jump_var = 0;
dynamic :await_ctx_var;
dynamic :saved_try_context_var0;
function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
@@ -31,7 +31,7 @@ static method main() → dynamic /* futureValueType= dynamic */ /* originally as
:result_or_exception;
self::expect(0, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
self::expect(0, let final core::Object* #t3 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
self::expect(42, let final core::Object* #t4 = CheckLibraryIsLoaded(prefix) in let final core::int* #t5 = 0 in let final core::int* #t6 = 42 in let final void #t7 = def::Extension|set#property(#t5, #t6) in #t6);
self::expect(42, let final core::Object* #t4 = CheckLibraryIsLoaded(prefix) in let final core::int #t5 = 0 in let final core::int #t6 = 42 in let final void #t7 = def::Extension|set#property(#t5, #t6) in #t6);
self::expect(84, let final core::Object* #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
self::expect(85, let final core::Object* #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
self::expect(42, let final core::Object* #t10 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
@@ -41,25 +41,25 @@ static method main() → dynamic /* futureValueType= dynamic */ /* originally as
asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
return;
}
on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
}
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
:async_op(null, null){() →* dynamic};
:async_op(null, null){() → dynamic};
:is_sync = true;
return :async_future;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
library;
library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
extension Extension on core::int* {
extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -69,27 +69,27 @@ extension Extension on core::int* {
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
static field core::int* Extension|staticField = 0;
static field core::int* topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int*
static field core::int Extension|staticField = 0;
static field core::int topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int
return def::Extension|staticField;
static set Extension|staticProperty(core::int* value) → void {
static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|staticMethod() → core::int*
static method Extension|staticMethod() → core::int
return def::Extension|staticField;
static method Extension|get#property(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
static method Extension|get#property(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|method(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
return () → core::int* => def::Extension|method(#this);
static get topLevelProperty() → core::int*
static method Extension|method(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|get#method(lowered final core::int #this) → () → core::int
return () → core::int => def::Extension|method(#this);
static get topLevelProperty() → core::int
return def::Extension|staticField;
static set topLevelProperty(core::int* value) → void {
static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
// @dart=2.9
extension Extension on int {
static int staticField = 0;
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
// @dart=2.9
import 'deferred_explicit_access_lib.dart' deferred as prefix hide Extension;
main() async {
@@ -1,4 +1,3 @@
// @dart = 2.9
import 'deferred_explicit_access_lib.dart' deferred as prefix hide Extension;
main() async {}
@@ -1,4 +1,3 @@
// @dart = 2.9
import 'deferred_explicit_access_lib.dart' deferred as prefix hide Extension;
expect(expected, actual) {}
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "deferred_explicit_access_lib.dart" as def;
import "dart:core" as core;
@@ -16,15 +16,15 @@ static method main() → dynamic async /* futureValueType= dynamic */ {
self::expect(87, let final dynamic #t7 = CheckLibraryIsLoaded(prefix) in def::topLevelMethod());
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
library;
library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
extension Extension on core::int* {
extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -34,27 +34,27 @@ extension Extension on core::int* {
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
static field core::int* Extension|staticField = 0;
static field core::int* topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int*
static field core::int Extension|staticField = 0;
static field core::int topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int
return def::Extension|staticField;
static set Extension|staticProperty(core::int* value) → void {
static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|staticMethod() → core::int*
static method Extension|staticMethod() → core::int
return def::Extension|staticField;
static method Extension|get#property(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
static method Extension|get#property(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|method(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
return () → core::int* => def::Extension|method(#this);
static get topLevelProperty() → core::int*
static method Extension|method(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|get#method(lowered final core::int #this) → () → core::int
return () → core::int => def::Extension|method(#this);
static get topLevelProperty() → core::int
return def::Extension|staticField;
static set topLevelProperty(core::int* value) → void {
static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "deferred_explicit_access_lib.dart" as def;
import "dart:core" as core;
@@ -16,15 +16,15 @@ static method main() → dynamic async /* futureValueType= dynamic */ {
self::expect(87, let final dynamic #t7 = CheckLibraryIsLoaded(prefix) in def::topLevelMethod());
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
library;
library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
extension Extension on core::int* {
extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -34,27 +34,27 @@ extension Extension on core::int* {
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
static field core::int* Extension|staticField = 0;
static field core::int* topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int*
static field core::int Extension|staticField = 0;
static field core::int topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int
return def::Extension|staticField;
static set Extension|staticProperty(core::int* value) → void {
static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|staticMethod() → core::int*
static method Extension|staticMethod() → core::int
return def::Extension|staticField;
static method Extension|get#property(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
static method Extension|get#property(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|method(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
return () → core::int* => def::Extension|method(#this);
static get topLevelProperty() → core::int*
static method Extension|method(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|get#method(lowered final core::int #this) → () → core::int
return () → core::int => def::Extension|method(#this);
static get topLevelProperty() → core::int
return def::Extension|staticField;
static set topLevelProperty(core::int* value) → void {
static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix hide Extension;
@@ -8,11 +8,11 @@ static method main() → dynamic async
static method expect(dynamic expected, dynamic actual) → dynamic
;
library;
library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;
extension Extension on core::int* {
extension Extension on core::int {
static field staticField = self2::Extension|staticField;
static get staticProperty = get self2::Extension|staticProperty;
static method staticMethod = self2::Extension|staticMethod;
@@ -22,25 +22,25 @@ extension Extension on core::int* {
static set staticProperty = set self2::Extension|staticProperty;
set property = self2::Extension|set#property;
}
static field core::int* Extension|staticField;
static field core::int* topLevelField;
static get Extension|staticProperty() → core::int*
static field core::int Extension|staticField;
static field core::int topLevelField;
static get Extension|staticProperty() → core::int
;
static set Extension|staticProperty(core::int* value) → void
static set Extension|staticProperty(core::int value) → void
;
static method Extension|staticMethod() → core::int*
static method Extension|staticMethod() → core::int
;
static method Extension|get#property(lowered final core::int* #this) → core::int*
static method Extension|get#property(lowered final core::int #this) → core::int
;
static method Extension|set#property(lowered final core::int* #this, core::int* value) → void
static method Extension|set#property(lowered final core::int #this, core::int value) → void
;
static method Extension|method(lowered final core::int* #this) → core::int*
static method Extension|method(lowered final core::int #this) → core::int
;
static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
return () → core::int* => self2::Extension|method(#this);
static get topLevelProperty() → core::int*
static method Extension|get#method(lowered final core::int #this) → () → core::int
return () → core::int => self2::Extension|method(#this);
static get topLevelProperty() → core::int
;
static set topLevelProperty(core::int* value) → void
static set topLevelProperty(core::int value) → void
;
static method topLevelMethod() → dynamic
;
@@ -1,4 +1,4 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
@@ -7,12 +7,12 @@ import "deferred_explicit_access_lib.dart" as def;
import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix hide Extension;
static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
core::bool* :is_sync = false;
dynamic :return_value;
(dynamic) →* dynamic :async_op_then;
(core::Object*, core::StackTrace*) →* dynamic :async_op_error;
core::int* :await_jump_var = 0;
(dynamic) → dynamic :async_op_then;
(core::Object, core::StackTrace) → dynamic :async_op_error;
core::int :await_jump_var = 0;
dynamic :await_ctx_var;
dynamic :saved_try_context_var0;
function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
@@ -32,25 +32,25 @@ static method main() → dynamic /* futureValueType= dynamic */ /* originally as
asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
return;
}
on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
}
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
:async_op(null, null){() →* dynamic};
:async_op(null, null){() → dynamic};
:is_sync = true;
return :async_future;
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}
library;
library /*isNonNullableByDefault*/;
import self as def;
import "dart:core" as core;
extension Extension on core::int* {
extension Extension on core::int {
static field staticField = def::Extension|staticField;
static get staticProperty = get def::Extension|staticProperty;
static method staticMethod = def::Extension|staticMethod;
@@ -60,27 +60,27 @@ extension Extension on core::int* {
static set staticProperty = set def::Extension|staticProperty;
set property = def::Extension|set#property;
}
static field core::int* Extension|staticField = 0;
static field core::int* topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int*
static field core::int Extension|staticField = 0;
static field core::int topLevelField = def::Extension|staticField;
static get Extension|staticProperty() → core::int
return def::Extension|staticField;
static set Extension|staticProperty(core::int* value) → void {
static set Extension|staticProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|staticMethod() → core::int*
static method Extension|staticMethod() → core::int
return def::Extension|staticField;
static method Extension|get#property(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|set#property(lowered final core::int* #this, core::int* value) → void {
static method Extension|get#property(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|set#property(lowered final core::int #this, core::int value) → void {
def::Extension|staticField = value;
}
static method Extension|method(lowered final core::int* #this) → core::int*
return #this.{core::num::+}(def::Extension|staticField){(core::num*) →* core::int*};
static method Extension|get#method(lowered final core::int* #this) → () →* core::int*
return () → core::int* => def::Extension|method(#this);
static get topLevelProperty() → core::int*
static method Extension|method(lowered final core::int #this) → core::int
return #this.{core::num::+}(def::Extension|staticField){(core::num) → core::int};
static method Extension|get#method(lowered final core::int #this) → () → core::int
return () → core::int => def::Extension|method(#this);
static get topLevelProperty() → core::int
return def::Extension|staticField;
static set topLevelProperty(core::int* value) → void {
static set topLevelProperty(core::int value) → void {
def::Extension|staticField = value;
}
static method topLevelMethod() → dynamic
@@ -1,7 +1,7 @@
// Copyright (c) 2019, 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.
// @dart=2.9
class Class {
var field;
}
@@ -67,11 +67,11 @@ extension Extension on Class {
}
class GenericClass<T> {
T field;
T? field;
}
extension GenericExtension<T> on GenericClass<T> {
T readGetter() {
T? readGetter() {
return property;
}
@@ -79,11 +79,11 @@ extension GenericExtension<T> on GenericClass<T> {
property = value;
}
writeSetterOptional([T value]) {
writeSetterOptional([T? value]) {
property = value;
}
writeSetterNamed({T value}) {
writeSetterNamed({T? value}) {
property = value;
}
@@ -91,17 +91,17 @@ extension GenericExtension<T> on GenericClass<T> {
property = value;
}
genericWriteSetterOptional<S extends T>([S value]) {
genericWriteSetterOptional<S extends T>([S? value]) {
property = value;
}
genericWriteSetterNamed<S extends T>({S value}) {
genericWriteSetterNamed<S extends T>({S? value}) {
property = value;
}
T get property => this.field;
T? get property => this.field;
void set property(T value) {
void set property(T? value) {
this.field = value;
}
@@ -1,4 +1,3 @@
// @dart = 2.9
class Class {
var field;
}
@@ -20,19 +19,19 @@ extension Extension on Class {
}
class GenericClass<T> {
T field;
T? field;
}
extension GenericExtension<T> on GenericClass<T> {
T readGetter() {}
T? readGetter() {}
writeSetterRequired(T value) {}
writeSetterOptional([T value]) {}
writeSetterNamed({T value}) {}
writeSetterOptional([T? value]) {}
writeSetterNamed({T? value}) {}
genericWriteSetterRequired<S extends T>(S value) {}
genericWriteSetterOptional<S extends T>([S value]) {}
genericWriteSetterNamed<S extends T>({S value}) {}
T get property => this.field;
void set property(T value) {}
genericWriteSetterOptional<S extends T>([S? value]) {}
genericWriteSetterNamed<S extends T>({S? value}) {}
T? get property => this.field;
void set property(T? value) {}
get tearOffGetterNoArgs => readGetter;
get tearOffGetterRequired => writeSetterRequired;
get tearOffGetterOptional => writeSetterOptional;
@@ -1,10 +1,9 @@
// @dart = 2.9
class Class {
var field;
}
class GenericClass<T> {
T field;
T? field;
}
extension Extension on Class {
@@ -24,10 +23,10 @@ extension Extension on Class {
}
extension GenericExtension<T> on GenericClass<T> {
T get property => this.field;
T readGetter() {}
genericWriteSetterNamed<S extends T>({S value}) {}
genericWriteSetterOptional<S extends T>([S value]) {}
T? get property => this.field;
T? readGetter() {}
genericWriteSetterNamed<S extends T>({S? value}) {}
genericWriteSetterOptional<S extends T>([S? value]) {}
genericWriteSetterRequired<S extends T>(S value) {}
get tearOffGetterGenericNamed => genericWriteSetterNamed;
get tearOffGetterGenericOptional => genericWriteSetterOptional;
@@ -39,9 +38,9 @@ extension GenericExtension<T> on GenericClass<T> {
getterCalls<S extends T>(S value) {}
invocations<S extends T>(S value) {}
tearOffs<S extends T>(S value) {}
void set property(T value) {}
writeSetterNamed({T value}) {}
writeSetterOptional([T value]) {}
void set property(T? value) {}
writeSetterNamed({T? value}) {}
writeSetterOptional([T? value]) {}
writeSetterRequired(T value) {}
}
@@ -1,40 +1,20 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field dynamic field = null;
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class GenericClass<T extends core::Object* = dynamic> extends core::Object {
covariant-by-class field self::GenericClass::T* field = null;
synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
class GenericClass<T extends core::Object? = dynamic> extends core::Object {
covariant-by-class field self::GenericClass::T? field = null;
synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method readGetter = self::Extension|readGetter;
tearoff readGetter = self::Extension|get#readGetter;
method writeSetterRequired = self::Extension|writeSetterRequired;
@@ -56,7 +36,7 @@ extension Extension on self::Class* {
tearoff getterCalls = self::Extension|get#getterCalls;
set property = self::Extension|set#property;
}
extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method readGetter = self::GenericExtension|readGetter;
tearoff readGetter = self::GenericExtension|get#readGetter;
method writeSetterRequired = self::GenericExtension|writeSetterRequired;
@@ -87,40 +67,40 @@ extension GenericExtension<T extends core::Object* = dynamic> on self::GenericCl
tearoff getterCalls = self::GenericExtension|get#getterCalls;
set property = self::GenericExtension|set#property;
}
static method Extension|get#readGetter(lowered final self::Class* #this) → () →* dynamic
static method Extension|get#readGetter(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|readGetter(#this);
static method Extension|readGetter(lowered final self::Class* #this) → dynamic {
static method Extension|readGetter(lowered final self::Class #this) → dynamic {
return self::Extension|get#property(#this);
}
static method Extension|writeSetterRequired(lowered final self::Class* #this, dynamic value) → dynamic {
static method Extension|writeSetterRequired(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|set#property(#this, value);
}
static method Extension|get#writeSetterRequired(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#writeSetterRequired(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|writeSetterRequired(#this, value);
static method Extension|writeSetterOptional(lowered final self::Class* #this, [dynamic value = #C1]) → dynamic {
static method Extension|writeSetterOptional(lowered final self::Class #this, [dynamic value = #C1]) → dynamic {
self::Extension|set#property(#this, value);
}
static method Extension|get#writeSetterOptional(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#writeSetterOptional(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic value = #C1]) → dynamic => self::Extension|writeSetterOptional(#this, value);
static method Extension|writeSetterNamed(lowered final self::Class* #this, {dynamic value = #C1}) → dynamic {
static method Extension|writeSetterNamed(lowered final self::Class #this, {dynamic value = #C1}) → dynamic {
self::Extension|set#property(#this, value);
}
static method Extension|get#writeSetterNamed(lowered final self::Class* #this) → ({value: dynamic}) →* dynamic
static method Extension|get#writeSetterNamed(lowered final self::Class #this) → ({value: dynamic}) → dynamic
return ({dynamic value = #C1}) → dynamic => self::Extension|writeSetterNamed(#this, value: value);
static method Extension|get#tearOffGetterNoArgs(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterNoArgs(lowered final self::Class #this) → dynamic
return self::Extension|get#readGetter(#this);
static method Extension|get#tearOffGetterRequired(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterRequired(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterRequired(#this);
static method Extension|get#tearOffGetterOptional(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterOptional(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterOptional(#this);
static method Extension|get#tearOffGetterNamed(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterNamed(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterNamed(#this);
static method Extension|get#property(lowered final self::Class* #this) → dynamic
static method Extension|get#property(lowered final self::Class #this) → dynamic
return #this.{self::Class::field}{dynamic};
static method Extension|set#property(lowered final self::Class* #this, dynamic value) → void {
static method Extension|set#property(lowered final self::Class #this, dynamic value) → void {
#this.{self::Class::field} = value;
}
static method Extension|invocations(lowered final self::Class* #this, dynamic value) → dynamic {
static method Extension|invocations(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|readGetter(#this);
self::Extension|writeSetterRequired(#this, value);
self::Extension|writeSetterOptional(#this);
@@ -128,23 +108,23 @@ static method Extension|invocations(lowered final self::Class* #this, dynamic va
self::Extension|writeSetterNamed(#this);
self::Extension|writeSetterNamed(#this, value: value);
}
static method Extension|get#invocations(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#invocations(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|invocations(#this, value);
static method Extension|get#tearOffs(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#tearOffs(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|tearOffs(#this, value);
static method Extension|tearOffs(lowered final self::Class* #this, dynamic value) → dynamic {
() →* dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
tearOffNoArgs(){() →* dynamic};
(dynamic) →* dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
tearOffRequired(value){(dynamic) →* dynamic};
([dynamic]) →* dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
tearOffOptional(){([dynamic]) →* dynamic};
tearOffOptional(value){([dynamic]) →* dynamic};
({value: dynamic}) →* dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
tearOffNamed(){({value: dynamic}) →* dynamic};
tearOffNamed(value: value){({value: dynamic}) →* dynamic};
static method Extension|tearOffs(lowered final self::Class #this, dynamic value) → dynamic {
() → dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
tearOffNoArgs(){() → dynamic};
(dynamic) → dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
tearOffRequired(value){(dynamic) → dynamic};
([dynamic]) → dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
tearOffOptional(){([dynamic]) → dynamic};
tearOffOptional(value){([dynamic]) → dynamic};
({value: dynamic}) → dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
tearOffNamed(){({value: dynamic}) → dynamic};
tearOffNamed(value: value){({value: dynamic}) → dynamic};
}
static method Extension|getterCalls(lowered final self::Class* #this, dynamic value) → dynamic {
static method Extension|getterCalls(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|get#tearOffGetterNoArgs(#this){dynamic}.call();
self::Extension|get#tearOffGetterRequired(#this){dynamic}.call(value);
self::Extension|get#tearOffGetterOptional(#this){dynamic}.call();
@@ -152,144 +132,144 @@ static method Extension|getterCalls(lowered final self::Class* #this, dynamic va
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call();
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call(value: value);
}
static method Extension|get#getterCalls(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#getterCalls(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|getterCalls(#this, value);
static method GenericExtension|readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T*>* #this) → self::GenericExtension|readGetter::T* {
return self::GenericExtension|get#property<self::GenericExtension|readGetter::T*>(#this);
static method GenericExtension|readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T%> #this) → self::GenericExtension|readGetter::T? {
return self::GenericExtension|get#property<self::GenericExtension|readGetter::T%>(#this);
}
static method GenericExtension|get#readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T*>* #this) → () →* self::GenericExtension|get#readGetter::T*
return () → self::GenericExtension|get#readGetter::T* => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T*>(#this);
static method GenericExtension|writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T*>* #this, self::GenericExtension|writeSetterRequired::T* value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T*>(#this, value);
static method GenericExtension|get#readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T%> #this) → () → self::GenericExtension|get#readGetter::T?
return () → self::GenericExtension|get#readGetter::T? => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T%>(#this);
static method GenericExtension|writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T%> #this, self::GenericExtension|writeSetterRequired::T% value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T%>(#this, value);
}
static method GenericExtension|get#writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T*>* #this) → (self::GenericExtension|get#writeSetterRequired::T*) →* dynamic
return (self::GenericExtension|get#writeSetterRequired::T* value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T*>(#this, value);
static method GenericExtension|writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T*>* #this, [self::GenericExtension|writeSetterOptional::T* value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T*>(#this, value);
static method GenericExtension|get#writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T%> #this) → (self::GenericExtension|get#writeSetterRequired::T%) → dynamic
return (self::GenericExtension|get#writeSetterRequired::T% value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T%>(#this, value);
static method GenericExtension|writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T%> #this, [self::GenericExtension|writeSetterOptional::T? value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T%>(#this, value);
}
static method GenericExtension|get#writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T*>* #this) → ([self::GenericExtension|get#writeSetterOptional::T*]) →* dynamic
return ([self::GenericExtension|get#writeSetterOptional::T* value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T*>(#this, value);
static method GenericExtension|writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T*>* #this, {self::GenericExtension|writeSetterNamed::T* value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T*>(#this, value);
static method GenericExtension|get#writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T%> #this) → ([self::GenericExtension|get#writeSetterOptional::T?]) → dynamic
return ([self::GenericExtension|get#writeSetterOptional::T? value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T%>(#this, value);
static method GenericExtension|writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T%> #this, {self::GenericExtension|writeSetterNamed::T? value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T%>(#this, value);
}
static method GenericExtension|get#writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T*>* #this) → ({value: self::GenericExtension|get#writeSetterNamed::T*}) →* dynamic
return ({self::GenericExtension|get#writeSetterNamed::T* value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T*>(#this, value: value);
static method GenericExtension|genericWriteSetterRequired<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T*>* #this, self::GenericExtension|genericWriteSetterRequired::S* value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T*>(#this, value);
static method GenericExtension|get#writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T%> #this) → ({value: self::GenericExtension|get#writeSetterNamed::T?}) → dynamic
return ({self::GenericExtension|get#writeSetterNamed::T? value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T%>(#this, value: value);
static method GenericExtension|genericWriteSetterRequired<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T%> #this, self::GenericExtension|genericWriteSetterRequired::S% value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T%>(#this, value);
}
static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S* value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T*, S*>(#this, value);
static method GenericExtension|genericWriteSetterOptional<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T*>* #this, [self::GenericExtension|genericWriteSetterOptional::S* value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T*>(#this, value);
static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S% value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T%, S%>(#this, value);
static method GenericExtension|genericWriteSetterOptional<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T%> #this, [self::GenericExtension|genericWriteSetterOptional::S? value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T%>(#this, value);
}
static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S*]) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S* value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T*, S*>(#this, value);
static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({value: S*}) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({S* value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T*, S*>(#this, value: value);
static method GenericExtension|genericWriteSetterNamed<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T*>* #this, {self::GenericExtension|genericWriteSetterNamed::S* value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T*>(#this, value);
static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S?]) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S? value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T%, S%>(#this, value);
static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({value: S?}) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({S? value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T%, S%>(#this, value: value);
static method GenericExtension|genericWriteSetterNamed<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T%> #this, {self::GenericExtension|genericWriteSetterNamed::S? value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T%>(#this, value);
}
static method GenericExtension|get#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T*>* #this) → self::GenericExtension|get#property::T*
return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T*};
static method GenericExtension|set#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T*>* #this, self::GenericExtension|set#property::T* value) → void {
static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T?};
static method GenericExtension|set#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T%> #this, self::GenericExtension|set#property::T? value) → void {
#this.{self::GenericClass::field} = value;
}
static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T*>* #this) → dynamic
return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T*>(#this);
static method GenericExtension|get#tearOffGetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T*>* #this) → dynamic
return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T*>(#this);
static method GenericExtension|get#tearOffGetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T*>* #this) → dynamic
return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T*>(#this);
static method GenericExtension|get#tearOffGetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T*>* #this) → dynamic
return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T*>(#this);
static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T*>* #this) → dynamic
return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T*>(#this);
static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T*>* #this) → dynamic
return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T*>(#this);
static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T*>* #this) → dynamic
return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T*>(#this);
static method GenericExtension|invocations<T extends core::Object* = dynamic, S extends self::GenericExtension|invocations::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T*>* #this, self::GenericExtension|invocations::S* value) → dynamic {
self::GenericExtension|readGetter<self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this, value: value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T%> #this) → dynamic
return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T%>(#this);
static method GenericExtension|get#tearOffGetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T%> #this) → dynamic
return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T%>(#this);
static method GenericExtension|get#tearOffGetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T%> #this) → dynamic
return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T%>(#this);
static method GenericExtension|get#tearOffGetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T%> #this) → dynamic
return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T%>(#this);
static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T%> #this) → dynamic
return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T%>(#this);
static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T%> #this) → dynamic
return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T%>(#this);
static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T%> #this) → dynamic
return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T%>(#this);
static method GenericExtension|invocations<T extends core::Object? = dynamic, S extends self::GenericExtension|invocations::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T%> #this, self::GenericExtension|invocations::S% value) → dynamic {
self::GenericExtension|readGetter<self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this, value: value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
}
static method GenericExtension|get#invocations<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T*>* #this) → <S extends self::GenericExtension|get#invocations::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#invocations::T* = dynamic>(S* value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T*, S*>(#this, value);
static method GenericExtension|tearOffs<T extends core::Object* = dynamic, S extends self::GenericExtension|tearOffs::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T*>* #this, self::GenericExtension|tearOffs::S* value) → dynamic {
() →* self::GenericExtension|tearOffs::T* tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T*>(#this);
tearOffNoArgs(){() →* self::GenericExtension|tearOffs::T*};
(self::GenericExtension|tearOffs::T*) →* dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
tearOffRequired(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
([self::GenericExtension|tearOffs::T*]) →* dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
tearOffOptional(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
tearOffOptional(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
({value: self::GenericExtension|tearOffs::T*}) →* dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
tearOffNamed(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
<S extends self::GenericExtension|tearOffs::T* = dynamic>(S*) →* dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::T*>(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
<S extends self::GenericExtension|tearOffs::T* = dynamic>([S*]) →* dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S*>(){([self::GenericExtension|tearOffs::S*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T*>(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
<S extends self::GenericExtension|tearOffs::T* = dynamic>({value: S*}) →* dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S*>(){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T*>(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
static method GenericExtension|get#invocations<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T%> #this) → <S extends self::GenericExtension|get#invocations::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#invocations::T% = dynamic>(S% value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T%, S%>(#this, value);
static method GenericExtension|tearOffs<T extends core::Object? = dynamic, S extends self::GenericExtension|tearOffs::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T%> #this, self::GenericExtension|tearOffs::S% value) → dynamic {
() → self::GenericExtension|tearOffs::T? tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T%>(#this);
tearOffNoArgs(){() → self::GenericExtension|tearOffs::T?};
(self::GenericExtension|tearOffs::T%) → dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
tearOffRequired(value){(self::GenericExtension|tearOffs::T%) → dynamic};
([self::GenericExtension|tearOffs::T?]) → dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
tearOffOptional(){([self::GenericExtension|tearOffs::T?]) → dynamic};
tearOffOptional(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
({value: self::GenericExtension|tearOffs::T?}) → dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
tearOffNamed(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
<S extends self::GenericExtension|tearOffs::T% = dynamic>(S%) → dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::T%>(value){(self::GenericExtension|tearOffs::T%) → dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
<S extends self::GenericExtension|tearOffs::T% = dynamic>([S?]) → dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S%>(){([self::GenericExtension|tearOffs::S?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T%>(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
<S extends self::GenericExtension|tearOffs::T% = dynamic>({value: S?}) → dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S%>(){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T%>(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
}
static method GenericExtension|get#tearOffs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T*>* #this) → <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S* value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T*, S*>(#this, value);
static method GenericExtension|getterCalls<T extends core::Object* = dynamic, S extends self::GenericExtension|getterCalls::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T*>* #this, self::GenericExtension|getterCalls::S* value) → dynamic {
self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value: value);
static method GenericExtension|get#tearOffs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T%> #this) → <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S% value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T%, S%>(#this, value);
static method GenericExtension|getterCalls<T extends core::Object? = dynamic, S extends self::GenericExtension|getterCalls::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T%> #this, self::GenericExtension|getterCalls::S% value) → dynamic {
self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value: value);
}
static method GenericExtension|get#getterCalls<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T*>* #this) → <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S* value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T*, S*>(#this, value);
static method GenericExtension|get#getterCalls<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T%> #this) → <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S% value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T%, S%>(#this, value);
static method main() → dynamic {}
constants {
@@ -1,40 +1,20 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field dynamic field = null;
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class GenericClass<T extends core::Object* = dynamic> extends core::Object {
covariant-by-class field self::GenericClass::T* field = null;
synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
class GenericClass<T extends core::Object? = dynamic> extends core::Object {
covariant-by-class field self::GenericClass::T? field = null;
synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method readGetter = self::Extension|readGetter;
tearoff readGetter = self::Extension|get#readGetter;
method writeSetterRequired = self::Extension|writeSetterRequired;
@@ -56,7 +36,7 @@ extension Extension on self::Class* {
tearoff getterCalls = self::Extension|get#getterCalls;
set property = self::Extension|set#property;
}
extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method readGetter = self::GenericExtension|readGetter;
tearoff readGetter = self::GenericExtension|get#readGetter;
method writeSetterRequired = self::GenericExtension|writeSetterRequired;
@@ -87,40 +67,40 @@ extension GenericExtension<T extends core::Object* = dynamic> on self::GenericCl
tearoff getterCalls = self::GenericExtension|get#getterCalls;
set property = self::GenericExtension|set#property;
}
static method Extension|get#readGetter(lowered final self::Class* #this) → () →* dynamic
static method Extension|get#readGetter(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|readGetter(#this);
static method Extension|readGetter(lowered final self::Class* #this) → dynamic {
static method Extension|readGetter(lowered final self::Class #this) → dynamic {
return self::Extension|get#property(#this);
}
static method Extension|writeSetterRequired(lowered final self::Class* #this, dynamic value) → dynamic {
static method Extension|writeSetterRequired(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|set#property(#this, value);
}
static method Extension|get#writeSetterRequired(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#writeSetterRequired(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|writeSetterRequired(#this, value);
static method Extension|writeSetterOptional(lowered final self::Class* #this, [dynamic value = #C1]) → dynamic {
static method Extension|writeSetterOptional(lowered final self::Class #this, [dynamic value = #C1]) → dynamic {
self::Extension|set#property(#this, value);
}
static method Extension|get#writeSetterOptional(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#writeSetterOptional(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic value = #C1]) → dynamic => self::Extension|writeSetterOptional(#this, value);
static method Extension|writeSetterNamed(lowered final self::Class* #this, {dynamic value = #C1}) → dynamic {
static method Extension|writeSetterNamed(lowered final self::Class #this, {dynamic value = #C1}) → dynamic {
self::Extension|set#property(#this, value);
}
static method Extension|get#writeSetterNamed(lowered final self::Class* #this) → ({value: dynamic}) →* dynamic
static method Extension|get#writeSetterNamed(lowered final self::Class #this) → ({value: dynamic}) → dynamic
return ({dynamic value = #C1}) → dynamic => self::Extension|writeSetterNamed(#this, value: value);
static method Extension|get#tearOffGetterNoArgs(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterNoArgs(lowered final self::Class #this) → dynamic
return self::Extension|get#readGetter(#this);
static method Extension|get#tearOffGetterRequired(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterRequired(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterRequired(#this);
static method Extension|get#tearOffGetterOptional(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterOptional(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterOptional(#this);
static method Extension|get#tearOffGetterNamed(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterNamed(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterNamed(#this);
static method Extension|get#property(lowered final self::Class* #this) → dynamic
static method Extension|get#property(lowered final self::Class #this) → dynamic
return #this.{self::Class::field}{dynamic};
static method Extension|set#property(lowered final self::Class* #this, dynamic value) → void {
static method Extension|set#property(lowered final self::Class #this, dynamic value) → void {
#this.{self::Class::field} = value;
}
static method Extension|invocations(lowered final self::Class* #this, dynamic value) → dynamic {
static method Extension|invocations(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|readGetter(#this);
self::Extension|writeSetterRequired(#this, value);
self::Extension|writeSetterOptional(#this);
@@ -128,23 +108,23 @@ static method Extension|invocations(lowered final self::Class* #this, dynamic va
self::Extension|writeSetterNamed(#this);
self::Extension|writeSetterNamed(#this, value: value);
}
static method Extension|get#invocations(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#invocations(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|invocations(#this, value);
static method Extension|get#tearOffs(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#tearOffs(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|tearOffs(#this, value);
static method Extension|tearOffs(lowered final self::Class* #this, dynamic value) → dynamic {
() →* dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
tearOffNoArgs(){() →* dynamic};
(dynamic) →* dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
tearOffRequired(value){(dynamic) →* dynamic};
([dynamic]) →* dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
tearOffOptional(){([dynamic]) →* dynamic};
tearOffOptional(value){([dynamic]) →* dynamic};
({value: dynamic}) →* dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
tearOffNamed(){({value: dynamic}) →* dynamic};
tearOffNamed(value: value){({value: dynamic}) →* dynamic};
static method Extension|tearOffs(lowered final self::Class #this, dynamic value) → dynamic {
() → dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
tearOffNoArgs(){() → dynamic};
(dynamic) → dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
tearOffRequired(value){(dynamic) → dynamic};
([dynamic]) → dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
tearOffOptional(){([dynamic]) → dynamic};
tearOffOptional(value){([dynamic]) → dynamic};
({value: dynamic}) → dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
tearOffNamed(){({value: dynamic}) → dynamic};
tearOffNamed(value: value){({value: dynamic}) → dynamic};
}
static method Extension|getterCalls(lowered final self::Class* #this, dynamic value) → dynamic {
static method Extension|getterCalls(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|get#tearOffGetterNoArgs(#this){dynamic}.call();
self::Extension|get#tearOffGetterRequired(#this){dynamic}.call(value);
self::Extension|get#tearOffGetterOptional(#this){dynamic}.call();
@@ -152,144 +132,144 @@ static method Extension|getterCalls(lowered final self::Class* #this, dynamic va
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call();
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call(value: value);
}
static method Extension|get#getterCalls(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#getterCalls(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|getterCalls(#this, value);
static method GenericExtension|readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T*>* #this) → self::GenericExtension|readGetter::T* {
return self::GenericExtension|get#property<self::GenericExtension|readGetter::T*>(#this);
static method GenericExtension|readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T%> #this) → self::GenericExtension|readGetter::T? {
return self::GenericExtension|get#property<self::GenericExtension|readGetter::T%>(#this);
}
static method GenericExtension|get#readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T*>* #this) → () →* self::GenericExtension|get#readGetter::T*
return () → self::GenericExtension|get#readGetter::T* => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T*>(#this);
static method GenericExtension|writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T*>* #this, self::GenericExtension|writeSetterRequired::T* value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T*>(#this, value);
static method GenericExtension|get#readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T%> #this) → () → self::GenericExtension|get#readGetter::T?
return () → self::GenericExtension|get#readGetter::T? => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T%>(#this);
static method GenericExtension|writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T%> #this, self::GenericExtension|writeSetterRequired::T% value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T%>(#this, value);
}
static method GenericExtension|get#writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T*>* #this) → (self::GenericExtension|get#writeSetterRequired::T*) →* dynamic
return (self::GenericExtension|get#writeSetterRequired::T* value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T*>(#this, value);
static method GenericExtension|writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T*>* #this, [self::GenericExtension|writeSetterOptional::T* value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T*>(#this, value);
static method GenericExtension|get#writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T%> #this) → (self::GenericExtension|get#writeSetterRequired::T%) → dynamic
return (self::GenericExtension|get#writeSetterRequired::T% value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T%>(#this, value);
static method GenericExtension|writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T%> #this, [self::GenericExtension|writeSetterOptional::T? value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T%>(#this, value);
}
static method GenericExtension|get#writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T*>* #this) → ([self::GenericExtension|get#writeSetterOptional::T*]) →* dynamic
return ([self::GenericExtension|get#writeSetterOptional::T* value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T*>(#this, value);
static method GenericExtension|writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T*>* #this, {self::GenericExtension|writeSetterNamed::T* value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T*>(#this, value);
static method GenericExtension|get#writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T%> #this) → ([self::GenericExtension|get#writeSetterOptional::T?]) → dynamic
return ([self::GenericExtension|get#writeSetterOptional::T? value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T%>(#this, value);
static method GenericExtension|writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T%> #this, {self::GenericExtension|writeSetterNamed::T? value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T%>(#this, value);
}
static method GenericExtension|get#writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T*>* #this) → ({value: self::GenericExtension|get#writeSetterNamed::T*}) →* dynamic
return ({self::GenericExtension|get#writeSetterNamed::T* value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T*>(#this, value: value);
static method GenericExtension|genericWriteSetterRequired<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T*>* #this, self::GenericExtension|genericWriteSetterRequired::S* value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T*>(#this, value);
static method GenericExtension|get#writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T%> #this) → ({value: self::GenericExtension|get#writeSetterNamed::T?}) → dynamic
return ({self::GenericExtension|get#writeSetterNamed::T? value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T%>(#this, value: value);
static method GenericExtension|genericWriteSetterRequired<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T%> #this, self::GenericExtension|genericWriteSetterRequired::S% value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T%>(#this, value);
}
static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S* value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T*, S*>(#this, value);
static method GenericExtension|genericWriteSetterOptional<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T*>* #this, [self::GenericExtension|genericWriteSetterOptional::S* value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T*>(#this, value);
static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S% value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T%, S%>(#this, value);
static method GenericExtension|genericWriteSetterOptional<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T%> #this, [self::GenericExtension|genericWriteSetterOptional::S? value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T%>(#this, value);
}
static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S*]) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S* value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T*, S*>(#this, value);
static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({value: S*}) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({S* value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T*, S*>(#this, value: value);
static method GenericExtension|genericWriteSetterNamed<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T*>* #this, {self::GenericExtension|genericWriteSetterNamed::S* value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T*>(#this, value);
static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S?]) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S? value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T%, S%>(#this, value);
static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({value: S?}) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({S? value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T%, S%>(#this, value: value);
static method GenericExtension|genericWriteSetterNamed<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T%> #this, {self::GenericExtension|genericWriteSetterNamed::S? value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T%>(#this, value);
}
static method GenericExtension|get#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T*>* #this) → self::GenericExtension|get#property::T*
return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T*};
static method GenericExtension|set#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T*>* #this, self::GenericExtension|set#property::T* value) → void {
static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T?};
static method GenericExtension|set#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T%> #this, self::GenericExtension|set#property::T? value) → void {
#this.{self::GenericClass::field} = value;
}
static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T*>* #this) → dynamic
return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T*>(#this);
static method GenericExtension|get#tearOffGetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T*>* #this) → dynamic
return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T*>(#this);
static method GenericExtension|get#tearOffGetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T*>* #this) → dynamic
return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T*>(#this);
static method GenericExtension|get#tearOffGetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T*>* #this) → dynamic
return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T*>(#this);
static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T*>* #this) → dynamic
return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T*>(#this);
static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T*>* #this) → dynamic
return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T*>(#this);
static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T*>* #this) → dynamic
return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T*>(#this);
static method GenericExtension|invocations<T extends core::Object* = dynamic, S extends self::GenericExtension|invocations::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T*>* #this, self::GenericExtension|invocations::S* value) → dynamic {
self::GenericExtension|readGetter<self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this, value: value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T%> #this) → dynamic
return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T%>(#this);
static method GenericExtension|get#tearOffGetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T%> #this) → dynamic
return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T%>(#this);
static method GenericExtension|get#tearOffGetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T%> #this) → dynamic
return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T%>(#this);
static method GenericExtension|get#tearOffGetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T%> #this) → dynamic
return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T%>(#this);
static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T%> #this) → dynamic
return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T%>(#this);
static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T%> #this) → dynamic
return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T%>(#this);
static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T%> #this) → dynamic
return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T%>(#this);
static method GenericExtension|invocations<T extends core::Object? = dynamic, S extends self::GenericExtension|invocations::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T%> #this, self::GenericExtension|invocations::S% value) → dynamic {
self::GenericExtension|readGetter<self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this, value: value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
}
static method GenericExtension|get#invocations<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T*>* #this) → <S extends self::GenericExtension|get#invocations::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#invocations::T* = dynamic>(S* value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T*, S*>(#this, value);
static method GenericExtension|tearOffs<T extends core::Object* = dynamic, S extends self::GenericExtension|tearOffs::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T*>* #this, self::GenericExtension|tearOffs::S* value) → dynamic {
() →* self::GenericExtension|tearOffs::T* tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T*>(#this);
tearOffNoArgs(){() →* self::GenericExtension|tearOffs::T*};
(self::GenericExtension|tearOffs::T*) →* dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
tearOffRequired(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
([self::GenericExtension|tearOffs::T*]) →* dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
tearOffOptional(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
tearOffOptional(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
({value: self::GenericExtension|tearOffs::T*}) →* dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
tearOffNamed(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
<S extends self::GenericExtension|tearOffs::T* = dynamic>(S*) →* dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::T*>(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
<S extends self::GenericExtension|tearOffs::T* = dynamic>([S*]) →* dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S*>(){([self::GenericExtension|tearOffs::S*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T*>(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
<S extends self::GenericExtension|tearOffs::T* = dynamic>({value: S*}) →* dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S*>(){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T*>(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
static method GenericExtension|get#invocations<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T%> #this) → <S extends self::GenericExtension|get#invocations::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#invocations::T% = dynamic>(S% value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T%, S%>(#this, value);
static method GenericExtension|tearOffs<T extends core::Object? = dynamic, S extends self::GenericExtension|tearOffs::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T%> #this, self::GenericExtension|tearOffs::S% value) → dynamic {
() → self::GenericExtension|tearOffs::T? tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T%>(#this);
tearOffNoArgs(){() → self::GenericExtension|tearOffs::T?};
(self::GenericExtension|tearOffs::T%) → dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
tearOffRequired(value){(self::GenericExtension|tearOffs::T%) → dynamic};
([self::GenericExtension|tearOffs::T?]) → dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
tearOffOptional(){([self::GenericExtension|tearOffs::T?]) → dynamic};
tearOffOptional(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
({value: self::GenericExtension|tearOffs::T?}) → dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
tearOffNamed(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
<S extends self::GenericExtension|tearOffs::T% = dynamic>(S%) → dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::T%>(value){(self::GenericExtension|tearOffs::T%) → dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
<S extends self::GenericExtension|tearOffs::T% = dynamic>([S?]) → dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S%>(){([self::GenericExtension|tearOffs::S?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T%>(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
<S extends self::GenericExtension|tearOffs::T% = dynamic>({value: S?}) → dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S%>(){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T%>(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
}
static method GenericExtension|get#tearOffs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T*>* #this) → <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S* value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T*, S*>(#this, value);
static method GenericExtension|getterCalls<T extends core::Object* = dynamic, S extends self::GenericExtension|getterCalls::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T*>* #this, self::GenericExtension|getterCalls::S* value) → dynamic {
self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value: value);
static method GenericExtension|get#tearOffs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T%> #this) → <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S% value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T%, S%>(#this, value);
static method GenericExtension|getterCalls<T extends core::Object? = dynamic, S extends self::GenericExtension|getterCalls::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T%> #this, self::GenericExtension|getterCalls::S% value) → dynamic {
self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value: value);
}
static method GenericExtension|get#getterCalls<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T*>* #this) → <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S* value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T*, S*>(#this, value);
static method GenericExtension|get#getterCalls<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T%> #this) → <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S% value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T%, S%>(#this, value);
static method main() → dynamic {}
constants {
@@ -1,38 +1,18 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field dynamic field;
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class GenericClass<T extends core::Object* = dynamic> extends core::Object {
covariant-by-class field self::GenericClass::T* field;
synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
class GenericClass<T extends core::Object? = dynamic> extends core::Object {
covariant-by-class field self::GenericClass::T? field;
synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method readGetter = self::Extension|readGetter;
tearoff readGetter = self::Extension|get#readGetter;
method writeSetterRequired = self::Extension|writeSetterRequired;
@@ -54,7 +34,7 @@ extension Extension on self::Class* {
tearoff getterCalls = self::Extension|get#getterCalls;
set property = self::Extension|set#property;
}
extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method readGetter = self::GenericExtension|readGetter;
tearoff readGetter = self::GenericExtension|get#readGetter;
method writeSetterRequired = self::GenericExtension|writeSetterRequired;
@@ -85,103 +65,103 @@ extension GenericExtension<T extends core::Object* = dynamic> on self::GenericCl
tearoff getterCalls = self::GenericExtension|get#getterCalls;
set property = self::GenericExtension|set#property;
}
static method Extension|get#readGetter(lowered final self::Class* #this) → () →* dynamic
static method Extension|get#readGetter(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|readGetter(#this);
static method Extension|readGetter(lowered final self::Class* #this) → dynamic
static method Extension|readGetter(lowered final self::Class #this) → dynamic
;
static method Extension|writeSetterRequired(lowered final self::Class* #this, dynamic value) → dynamic
static method Extension|writeSetterRequired(lowered final self::Class #this, dynamic value) → dynamic
;
static method Extension|get#writeSetterRequired(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#writeSetterRequired(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|writeSetterRequired(#this, value);
static method Extension|writeSetterOptional(lowered final self::Class* #this, [dynamic value]) → dynamic
static method Extension|writeSetterOptional(lowered final self::Class #this, [dynamic value]) → dynamic
;
static method Extension|get#writeSetterOptional(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#writeSetterOptional(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic value]) → dynamic => self::Extension|writeSetterOptional(#this, value);
static method Extension|writeSetterNamed(lowered final self::Class* #this, {dynamic value}) → dynamic
static method Extension|writeSetterNamed(lowered final self::Class #this, {dynamic value}) → dynamic
;
static method Extension|get#writeSetterNamed(lowered final self::Class* #this) → ({value: dynamic}) →* dynamic
static method Extension|get#writeSetterNamed(lowered final self::Class #this) → ({value: dynamic}) → dynamic
return ({dynamic value}) → dynamic => self::Extension|writeSetterNamed(#this, value: value);
static method Extension|get#tearOffGetterNoArgs(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterNoArgs(lowered final self::Class #this) → dynamic
;
static method Extension|get#tearOffGetterRequired(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterRequired(lowered final self::Class #this) → dynamic
;
static method Extension|get#tearOffGetterOptional(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterOptional(lowered final self::Class #this) → dynamic
;
static method Extension|get#tearOffGetterNamed(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterNamed(lowered final self::Class #this) → dynamic
;
static method Extension|get#property(lowered final self::Class* #this) → dynamic
static method Extension|get#property(lowered final self::Class #this) → dynamic
;
static method Extension|set#property(lowered final self::Class* #this, dynamic value) → void
static method Extension|set#property(lowered final self::Class #this, dynamic value) → void
;
static method Extension|invocations(lowered final self::Class* #this, dynamic value) → dynamic
static method Extension|invocations(lowered final self::Class #this, dynamic value) → dynamic
;
static method Extension|get#invocations(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#invocations(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|invocations(#this, value);
static method Extension|get#tearOffs(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#tearOffs(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|tearOffs(#this, value);
static method Extension|tearOffs(lowered final self::Class* #this, dynamic value) → dynamic
static method Extension|tearOffs(lowered final self::Class #this, dynamic value) → dynamic
;
static method Extension|getterCalls(lowered final self::Class* #this, dynamic value) → dynamic
static method Extension|getterCalls(lowered final self::Class #this, dynamic value) → dynamic
;
static method Extension|get#getterCalls(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#getterCalls(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|getterCalls(#this, value);
static method GenericExtension|readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T*>* #this) → self::GenericExtension|readGetter::T*
static method GenericExtension|readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T%> #this) → self::GenericExtension|readGetter::T?
;
static method GenericExtension|get#readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T*>* #this) → () →* self::GenericExtension|get#readGetter::T*
return () → self::GenericExtension|get#readGetter::T* => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T*>(#this);
static method GenericExtension|writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T*>* #this, self::GenericExtension|writeSetterRequired::T* value) → dynamic
static method GenericExtension|get#readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T%> #this) → () → self::GenericExtension|get#readGetter::T?
return () → self::GenericExtension|get#readGetter::T? => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T%>(#this);
static method GenericExtension|writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T%> #this, self::GenericExtension|writeSetterRequired::T% value) → dynamic
;
static method GenericExtension|get#writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T*>* #this) → (self::GenericExtension|get#writeSetterRequired::T*) →* dynamic
return (self::GenericExtension|get#writeSetterRequired::T* value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T*>(#this, value);
static method GenericExtension|writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T*>* #this, [self::GenericExtension|writeSetterOptional::T* value]) → dynamic
static method GenericExtension|get#writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T%> #this) → (self::GenericExtension|get#writeSetterRequired::T%) → dynamic
return (self::GenericExtension|get#writeSetterRequired::T% value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T%>(#this, value);
static method GenericExtension|writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T%> #this, [self::GenericExtension|writeSetterOptional::T? value]) → dynamic
;
static method GenericExtension|get#writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T*>* #this) → ([self::GenericExtension|get#writeSetterOptional::T*]) →* dynamic
return ([self::GenericExtension|get#writeSetterOptional::T* value]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T*>(#this, value);
static method GenericExtension|writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T*>* #this, {self::GenericExtension|writeSetterNamed::T* value}) → dynamic
static method GenericExtension|get#writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T%> #this) → ([self::GenericExtension|get#writeSetterOptional::T?]) → dynamic
return ([self::GenericExtension|get#writeSetterOptional::T? value]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T%>(#this, value);
static method GenericExtension|writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T%> #this, {self::GenericExtension|writeSetterNamed::T? value}) → dynamic
;
static method GenericExtension|get#writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T*>* #this) → ({value: self::GenericExtension|get#writeSetterNamed::T*}) →* dynamic
return ({self::GenericExtension|get#writeSetterNamed::T* value}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T*>(#this, value: value);
static method GenericExtension|genericWriteSetterRequired<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T*>* #this, self::GenericExtension|genericWriteSetterRequired::S* value) → dynamic
static method GenericExtension|get#writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T%> #this) → ({value: self::GenericExtension|get#writeSetterNamed::T?}) → dynamic
return ({self::GenericExtension|get#writeSetterNamed::T? value}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T%>(#this, value: value);
static method GenericExtension|genericWriteSetterRequired<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T%> #this, self::GenericExtension|genericWriteSetterRequired::S% value) → dynamic
;
static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S* value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T*, S*>(#this, value);
static method GenericExtension|genericWriteSetterOptional<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T*>* #this, [self::GenericExtension|genericWriteSetterOptional::S* value]) → dynamic
static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S% value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T%, S%>(#this, value);
static method GenericExtension|genericWriteSetterOptional<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T%> #this, [self::GenericExtension|genericWriteSetterOptional::S? value]) → dynamic
;
static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S*]) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S* value]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T*, S*>(#this, value);
static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({value: S*}) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({S* value}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T*, S*>(#this, value: value);
static method GenericExtension|genericWriteSetterNamed<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T*>* #this, {self::GenericExtension|genericWriteSetterNamed::S* value}) → dynamic
static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S?]) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S? value]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T%, S%>(#this, value);
static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({value: S?}) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({S? value}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T%, S%>(#this, value: value);
static method GenericExtension|genericWriteSetterNamed<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T%> #this, {self::GenericExtension|genericWriteSetterNamed::S? value}) → dynamic
;
static method GenericExtension|get#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T*>* #this) → self::GenericExtension|get#property::T*
static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
;
static method GenericExtension|set#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T*>* #this, self::GenericExtension|set#property::T* value) → void
static method GenericExtension|set#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T%> #this, self::GenericExtension|set#property::T? value) → void
;
static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T*>* #this) → dynamic
static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T%> #this) → dynamic
;
static method GenericExtension|get#tearOffGetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T*>* #this) → dynamic
static method GenericExtension|get#tearOffGetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T%> #this) → dynamic
;
static method GenericExtension|get#tearOffGetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T*>* #this) → dynamic
static method GenericExtension|get#tearOffGetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T%> #this) → dynamic
;
static method GenericExtension|get#tearOffGetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T*>* #this) → dynamic
static method GenericExtension|get#tearOffGetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T%> #this) → dynamic
;
static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T*>* #this) → dynamic
static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T%> #this) → dynamic
;
static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T*>* #this) → dynamic
static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T%> #this) → dynamic
;
static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T*>* #this) → dynamic
static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T%> #this) → dynamic
;
static method GenericExtension|invocations<T extends core::Object* = dynamic, S extends self::GenericExtension|invocations::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T*>* #this, self::GenericExtension|invocations::S* value) → dynamic
static method GenericExtension|invocations<T extends core::Object? = dynamic, S extends self::GenericExtension|invocations::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T%> #this, self::GenericExtension|invocations::S% value) → dynamic
;
static method GenericExtension|get#invocations<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T*>* #this) → <S extends self::GenericExtension|get#invocations::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#invocations::T* = dynamic>(S* value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T*, S*>(#this, value);
static method GenericExtension|tearOffs<T extends core::Object* = dynamic, S extends self::GenericExtension|tearOffs::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T*>* #this, self::GenericExtension|tearOffs::S* value) → dynamic
static method GenericExtension|get#invocations<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T%> #this) → <S extends self::GenericExtension|get#invocations::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#invocations::T% = dynamic>(S% value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T%, S%>(#this, value);
static method GenericExtension|tearOffs<T extends core::Object? = dynamic, S extends self::GenericExtension|tearOffs::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T%> #this, self::GenericExtension|tearOffs::S% value) → dynamic
;
static method GenericExtension|get#tearOffs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T*>* #this) → <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S* value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T*, S*>(#this, value);
static method GenericExtension|getterCalls<T extends core::Object* = dynamic, S extends self::GenericExtension|getterCalls::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T*>* #this, self::GenericExtension|getterCalls::S* value) → dynamic
static method GenericExtension|get#tearOffs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T%> #this) → <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S% value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T%, S%>(#this, value);
static method GenericExtension|getterCalls<T extends core::Object? = dynamic, S extends self::GenericExtension|getterCalls::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T%> #this, self::GenericExtension|getterCalls::S% value) → dynamic
;
static method GenericExtension|get#getterCalls<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T*>* #this) → <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S* value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T*, S*>(#this, value);
static method GenericExtension|get#getterCalls<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T%> #this) → <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S% value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T%, S%>(#this, value);
static method main() → dynamic
;
@@ -1,40 +1,20 @@
library;
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field dynamic field = null;
synthetic constructor •() → self::Class*
synthetic constructor •() → self::Class
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
class GenericClass<T extends core::Object* = dynamic> extends core::Object {
covariant-by-class field self::GenericClass::T* field = null;
synthetic constructor •() → self::GenericClass<self::GenericClass::T*>*
class GenericClass<T extends core::Object? = dynamic> extends core::Object {
covariant-by-class field self::GenericClass::T? field = null;
synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
: super core::Object::•()
;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
abstract member-signature method toString() → core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
extension Extension on self::Class* {
extension Extension on self::Class {
method readGetter = self::Extension|readGetter;
tearoff readGetter = self::Extension|get#readGetter;
method writeSetterRequired = self::Extension|writeSetterRequired;
@@ -56,7 +36,7 @@ extension Extension on self::Class* {
tearoff getterCalls = self::Extension|get#getterCalls;
set property = self::Extension|set#property;
}
extension GenericExtension<T extends core::Object* = dynamic> on self::GenericClass<T*>* {
extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
method readGetter = self::GenericExtension|readGetter;
tearoff readGetter = self::GenericExtension|get#readGetter;
method writeSetterRequired = self::GenericExtension|writeSetterRequired;
@@ -87,40 +67,40 @@ extension GenericExtension<T extends core::Object* = dynamic> on self::GenericCl
tearoff getterCalls = self::GenericExtension|get#getterCalls;
set property = self::GenericExtension|set#property;
}
static method Extension|get#readGetter(lowered final self::Class* #this) → () →* dynamic
static method Extension|get#readGetter(lowered final self::Class #this) → () → dynamic
return () → dynamic => self::Extension|readGetter(#this);
static method Extension|readGetter(lowered final self::Class* #this) → dynamic {
static method Extension|readGetter(lowered final self::Class #this) → dynamic {
return self::Extension|get#property(#this);
}
static method Extension|writeSetterRequired(lowered final self::Class* #this, dynamic value) → dynamic {
static method Extension|writeSetterRequired(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|set#property(#this, value);
}
static method Extension|get#writeSetterRequired(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#writeSetterRequired(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|writeSetterRequired(#this, value);
static method Extension|writeSetterOptional(lowered final self::Class* #this, [dynamic value = #C1]) → dynamic {
static method Extension|writeSetterOptional(lowered final self::Class #this, [dynamic value = #C1]) → dynamic {
self::Extension|set#property(#this, value);
}
static method Extension|get#writeSetterOptional(lowered final self::Class* #this) → ([dynamic]) →* dynamic
static method Extension|get#writeSetterOptional(lowered final self::Class #this) → ([dynamic]) → dynamic
return ([dynamic value = #C1]) → dynamic => self::Extension|writeSetterOptional(#this, value);
static method Extension|writeSetterNamed(lowered final self::Class* #this, {dynamic value = #C1}) → dynamic {
static method Extension|writeSetterNamed(lowered final self::Class #this, {dynamic value = #C1}) → dynamic {
self::Extension|set#property(#this, value);
}
static method Extension|get#writeSetterNamed(lowered final self::Class* #this) → ({value: dynamic}) →* dynamic
static method Extension|get#writeSetterNamed(lowered final self::Class #this) → ({value: dynamic}) → dynamic
return ({dynamic value = #C1}) → dynamic => self::Extension|writeSetterNamed(#this, value: value);
static method Extension|get#tearOffGetterNoArgs(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterNoArgs(lowered final self::Class #this) → dynamic
return self::Extension|get#readGetter(#this);
static method Extension|get#tearOffGetterRequired(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterRequired(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterRequired(#this);
static method Extension|get#tearOffGetterOptional(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterOptional(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterOptional(#this);
static method Extension|get#tearOffGetterNamed(lowered final self::Class* #this) → dynamic
static method Extension|get#tearOffGetterNamed(lowered final self::Class #this) → dynamic
return self::Extension|get#writeSetterNamed(#this);
static method Extension|get#property(lowered final self::Class* #this) → dynamic
static method Extension|get#property(lowered final self::Class #this) → dynamic
return #this.{self::Class::field}{dynamic};
static method Extension|set#property(lowered final self::Class* #this, dynamic value) → void {
static method Extension|set#property(lowered final self::Class #this, dynamic value) → void {
#this.{self::Class::field} = value;
}
static method Extension|invocations(lowered final self::Class* #this, dynamic value) → dynamic {
static method Extension|invocations(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|readGetter(#this);
self::Extension|writeSetterRequired(#this, value);
self::Extension|writeSetterOptional(#this);
@@ -128,23 +108,23 @@ static method Extension|invocations(lowered final self::Class* #this, dynamic va
self::Extension|writeSetterNamed(#this);
self::Extension|writeSetterNamed(#this, value: value);
}
static method Extension|get#invocations(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#invocations(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|invocations(#this, value);
static method Extension|get#tearOffs(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#tearOffs(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|tearOffs(#this, value);
static method Extension|tearOffs(lowered final self::Class* #this, dynamic value) → dynamic {
() →* dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
tearOffNoArgs(){() →* dynamic};
(dynamic) →* dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
tearOffRequired(value){(dynamic) →* dynamic};
([dynamic]) →* dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
tearOffOptional(){([dynamic]) →* dynamic};
tearOffOptional(value){([dynamic]) →* dynamic};
({value: dynamic}) →* dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
tearOffNamed(){({value: dynamic}) →* dynamic};
tearOffNamed(value: value){({value: dynamic}) →* dynamic};
static method Extension|tearOffs(lowered final self::Class #this, dynamic value) → dynamic {
() → dynamic tearOffNoArgs = self::Extension|get#readGetter(#this);
tearOffNoArgs(){() → dynamic};
(dynamic) → dynamic tearOffRequired = self::Extension|get#writeSetterRequired(#this);
tearOffRequired(value){(dynamic) → dynamic};
([dynamic]) → dynamic tearOffOptional = self::Extension|get#writeSetterOptional(#this);
tearOffOptional(){([dynamic]) → dynamic};
tearOffOptional(value){([dynamic]) → dynamic};
({value: dynamic}) → dynamic tearOffNamed = self::Extension|get#writeSetterNamed(#this);
tearOffNamed(){({value: dynamic}) → dynamic};
tearOffNamed(value: value){({value: dynamic}) → dynamic};
}
static method Extension|getterCalls(lowered final self::Class* #this, dynamic value) → dynamic {
static method Extension|getterCalls(lowered final self::Class #this, dynamic value) → dynamic {
self::Extension|get#tearOffGetterNoArgs(#this){dynamic}.call();
self::Extension|get#tearOffGetterRequired(#this){dynamic}.call(value);
self::Extension|get#tearOffGetterOptional(#this){dynamic}.call();
@@ -152,144 +132,144 @@ static method Extension|getterCalls(lowered final self::Class* #this, dynamic va
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call();
self::Extension|get#tearOffGetterNamed(#this){dynamic}.call(value: value);
}
static method Extension|get#getterCalls(lowered final self::Class* #this) → (dynamic) →* dynamic
static method Extension|get#getterCalls(lowered final self::Class #this) → (dynamic) → dynamic
return (dynamic value) → dynamic => self::Extension|getterCalls(#this, value);
static method GenericExtension|readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T*>* #this) → self::GenericExtension|readGetter::T* {
return self::GenericExtension|get#property<self::GenericExtension|readGetter::T*>(#this);
static method GenericExtension|readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|readGetter::T%> #this) → self::GenericExtension|readGetter::T? {
return self::GenericExtension|get#property<self::GenericExtension|readGetter::T%>(#this);
}
static method GenericExtension|get#readGetter<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T*>* #this) → () →* self::GenericExtension|get#readGetter::T*
return () → self::GenericExtension|get#readGetter::T* => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T*>(#this);
static method GenericExtension|writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T*>* #this, self::GenericExtension|writeSetterRequired::T* value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T*>(#this, value);
static method GenericExtension|get#readGetter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#readGetter::T%> #this) → () → self::GenericExtension|get#readGetter::T?
return () → self::GenericExtension|get#readGetter::T? => self::GenericExtension|readGetter<self::GenericExtension|get#readGetter::T%>(#this);
static method GenericExtension|writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterRequired::T%> #this, self::GenericExtension|writeSetterRequired::T% value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterRequired::T%>(#this, value);
}
static method GenericExtension|get#writeSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T*>* #this) → (self::GenericExtension|get#writeSetterRequired::T*) →* dynamic
return (self::GenericExtension|get#writeSetterRequired::T* value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T*>(#this, value);
static method GenericExtension|writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T*>* #this, [self::GenericExtension|writeSetterOptional::T* value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T*>(#this, value);
static method GenericExtension|get#writeSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterRequired::T%> #this) → (self::GenericExtension|get#writeSetterRequired::T%) → dynamic
return (self::GenericExtension|get#writeSetterRequired::T% value) → dynamic => self::GenericExtension|writeSetterRequired<self::GenericExtension|get#writeSetterRequired::T%>(#this, value);
static method GenericExtension|writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterOptional::T%> #this, [self::GenericExtension|writeSetterOptional::T? value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterOptional::T%>(#this, value);
}
static method GenericExtension|get#writeSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T*>* #this) → ([self::GenericExtension|get#writeSetterOptional::T*]) →* dynamic
return ([self::GenericExtension|get#writeSetterOptional::T* value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T*>(#this, value);
static method GenericExtension|writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T*>* #this, {self::GenericExtension|writeSetterNamed::T* value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T*>(#this, value);
static method GenericExtension|get#writeSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterOptional::T%> #this) → ([self::GenericExtension|get#writeSetterOptional::T?]) → dynamic
return ([self::GenericExtension|get#writeSetterOptional::T? value = #C1]) → dynamic => self::GenericExtension|writeSetterOptional<self::GenericExtension|get#writeSetterOptional::T%>(#this, value);
static method GenericExtension|writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|writeSetterNamed::T%> #this, {self::GenericExtension|writeSetterNamed::T? value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|writeSetterNamed::T%>(#this, value);
}
static method GenericExtension|get#writeSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T*>* #this) → ({value: self::GenericExtension|get#writeSetterNamed::T*}) →* dynamic
return ({self::GenericExtension|get#writeSetterNamed::T* value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T*>(#this, value: value);
static method GenericExtension|genericWriteSetterRequired<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T*>* #this, self::GenericExtension|genericWriteSetterRequired::S* value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T*>(#this, value);
static method GenericExtension|get#writeSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#writeSetterNamed::T%> #this) → ({value: self::GenericExtension|get#writeSetterNamed::T?}) → dynamic
return ({self::GenericExtension|get#writeSetterNamed::T? value = #C1}) → dynamic => self::GenericExtension|writeSetterNamed<self::GenericExtension|get#writeSetterNamed::T%>(#this, value: value);
static method GenericExtension|genericWriteSetterRequired<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterRequired::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterRequired::T%> #this, self::GenericExtension|genericWriteSetterRequired::S% value) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterRequired::T%>(#this, value);
}
static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterRequired::T* = dynamic>(S* value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T*, S*>(#this, value);
static method GenericExtension|genericWriteSetterOptional<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T*>* #this, [self::GenericExtension|genericWriteSetterOptional::S* value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T*>(#this, value);
static method GenericExtension|get#genericWriteSetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterRequired::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterRequired::T% = dynamic>(S% value) → dynamic => self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|get#genericWriteSetterRequired::T%, S%>(#this, value);
static method GenericExtension|genericWriteSetterOptional<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterOptional::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterOptional::T%> #this, [self::GenericExtension|genericWriteSetterOptional::S? value = #C1]) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterOptional::T%>(#this, value);
}
static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S*]) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterOptional::T* = dynamic>([S* value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T*, S*>(#this, value);
static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T*>* #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({value: S*}) →* dynamic
return <S extends self::GenericExtension|get#genericWriteSetterNamed::T* = dynamic>({S* value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T*, S*>(#this, value: value);
static method GenericExtension|genericWriteSetterNamed<T extends core::Object* = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T*>* #this, {self::GenericExtension|genericWriteSetterNamed::S* value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T*>(#this, value);
static method GenericExtension|get#genericWriteSetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterOptional::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S?]) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterOptional::T% = dynamic>([S? value = #C1]) → dynamic => self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|get#genericWriteSetterOptional::T%, S%>(#this, value);
static method GenericExtension|get#genericWriteSetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#genericWriteSetterNamed::T%> #this) → <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({value: S?}) → dynamic
return <S extends self::GenericExtension|get#genericWriteSetterNamed::T% = dynamic>({S? value = #C1}) → dynamic => self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|get#genericWriteSetterNamed::T%, S%>(#this, value: value);
static method GenericExtension|genericWriteSetterNamed<T extends core::Object? = dynamic, S extends self::GenericExtension|genericWriteSetterNamed::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|genericWriteSetterNamed::T%> #this, {self::GenericExtension|genericWriteSetterNamed::S? value = #C1}) → dynamic {
self::GenericExtension|set#property<self::GenericExtension|genericWriteSetterNamed::T%>(#this, value);
}
static method GenericExtension|get#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T*>* #this) → self::GenericExtension|get#property::T*
return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T*};
static method GenericExtension|set#property<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T*>* #this, self::GenericExtension|set#property::T* value) → void {
static method GenericExtension|get#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#property::T%> #this) → self::GenericExtension|get#property::T?
return #this.{self::GenericClass::field}{self::GenericExtension|get#property::T?};
static method GenericExtension|set#property<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#property::T%> #this, self::GenericExtension|set#property::T? value) → void {
#this.{self::GenericClass::field} = value;
}
static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T*>* #this) → dynamic
return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T*>(#this);
static method GenericExtension|get#tearOffGetterRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T*>* #this) → dynamic
return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T*>(#this);
static method GenericExtension|get#tearOffGetterOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T*>* #this) → dynamic
return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T*>(#this);
static method GenericExtension|get#tearOffGetterNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T*>* #this) → dynamic
return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T*>(#this);
static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T*>* #this) → dynamic
return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T*>(#this);
static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T*>* #this) → dynamic
return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T*>(#this);
static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T*>* #this) → dynamic
return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T*>(#this);
static method GenericExtension|invocations<T extends core::Object* = dynamic, S extends self::GenericExtension|invocations::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T*>* #this, self::GenericExtension|invocations::S* value) → dynamic {
self::GenericExtension|readGetter<self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T*>(#this, value: value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::T*>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T*, self::GenericExtension|invocations::S*>(#this, value: value);
static method GenericExtension|get#tearOffGetterNoArgs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNoArgs::T%> #this) → dynamic
return self::GenericExtension|get#readGetter<self::GenericExtension|get#tearOffGetterNoArgs::T%>(#this);
static method GenericExtension|get#tearOffGetterRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterRequired::T%> #this) → dynamic
return self::GenericExtension|get#writeSetterRequired<self::GenericExtension|get#tearOffGetterRequired::T%>(#this);
static method GenericExtension|get#tearOffGetterOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterOptional::T%> #this) → dynamic
return self::GenericExtension|get#writeSetterOptional<self::GenericExtension|get#tearOffGetterOptional::T%>(#this);
static method GenericExtension|get#tearOffGetterNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterNamed::T%> #this) → dynamic
return self::GenericExtension|get#writeSetterNamed<self::GenericExtension|get#tearOffGetterNamed::T%>(#this);
static method GenericExtension|get#tearOffGetterGenericRequired<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericRequired::T%> #this) → dynamic
return self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|get#tearOffGetterGenericRequired::T%>(#this);
static method GenericExtension|get#tearOffGetterGenericOptional<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericOptional::T%> #this) → dynamic
return self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|get#tearOffGetterGenericOptional::T%>(#this);
static method GenericExtension|get#tearOffGetterGenericNamed<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffGetterGenericNamed::T%> #this) → dynamic
return self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|get#tearOffGetterGenericNamed::T%>(#this);
static method GenericExtension|invocations<T extends core::Object? = dynamic, S extends self::GenericExtension|invocations::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|invocations::T%> #this, self::GenericExtension|invocations::S% value) → dynamic {
self::GenericExtension|readGetter<self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|writeSetterRequired<self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|writeSetterOptional<self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|writeSetterNamed<self::GenericExtension|invocations::T%>(#this, value: value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|genericWriteSetterRequired<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value);
self::GenericExtension|genericWriteSetterOptional<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::T%>(#this, value: value);
self::GenericExtension|genericWriteSetterNamed<self::GenericExtension|invocations::T%, self::GenericExtension|invocations::S%>(#this, value: value);
}
static method GenericExtension|get#invocations<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T*>* #this) → <S extends self::GenericExtension|get#invocations::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#invocations::T* = dynamic>(S* value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T*, S*>(#this, value);
static method GenericExtension|tearOffs<T extends core::Object* = dynamic, S extends self::GenericExtension|tearOffs::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T*>* #this, self::GenericExtension|tearOffs::S* value) → dynamic {
() →* self::GenericExtension|tearOffs::T* tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T*>(#this);
tearOffNoArgs(){() →* self::GenericExtension|tearOffs::T*};
(self::GenericExtension|tearOffs::T*) →* dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
tearOffRequired(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
([self::GenericExtension|tearOffs::T*]) →* dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
tearOffOptional(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
tearOffOptional(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
({value: self::GenericExtension|tearOffs::T*}) →* dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
tearOffNamed(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
<S extends self::GenericExtension|tearOffs::T* = dynamic>(S*) →* dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T*>(#this);
genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::T*>(value){(self::GenericExtension|tearOffs::T*) →* dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::S*>(value){(self::GenericExtension|tearOffs::S*) →* dynamic};
<S extends self::GenericExtension|tearOffs::T* = dynamic>([S*]) →* dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T*>(#this);
genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T*>(){([self::GenericExtension|tearOffs::T*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S*>(){([self::GenericExtension|tearOffs::S*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T*>(value){([self::GenericExtension|tearOffs::T*]) →* dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S*>(value){([self::GenericExtension|tearOffs::S*]) →* dynamic};
<S extends self::GenericExtension|tearOffs::T* = dynamic>({value: S*}) →* dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T*>(#this);
genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T*>(){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S*>(){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T*>(value: value){({value: self::GenericExtension|tearOffs::T*}) →* dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S*>(value: value){({value: self::GenericExtension|tearOffs::S*}) →* dynamic};
static method GenericExtension|get#invocations<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#invocations::T%> #this) → <S extends self::GenericExtension|get#invocations::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#invocations::T% = dynamic>(S% value) → dynamic => self::GenericExtension|invocations<self::GenericExtension|get#invocations::T%, S%>(#this, value);
static method GenericExtension|tearOffs<T extends core::Object? = dynamic, S extends self::GenericExtension|tearOffs::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|tearOffs::T%> #this, self::GenericExtension|tearOffs::S% value) → dynamic {
() → self::GenericExtension|tearOffs::T? tearOffNoArgs = self::GenericExtension|get#readGetter<self::GenericExtension|tearOffs::T%>(#this);
tearOffNoArgs(){() → self::GenericExtension|tearOffs::T?};
(self::GenericExtension|tearOffs::T%) → dynamic tearOffRequired = self::GenericExtension|get#writeSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
tearOffRequired(value){(self::GenericExtension|tearOffs::T%) → dynamic};
([self::GenericExtension|tearOffs::T?]) → dynamic tearOffOptional = self::GenericExtension|get#writeSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
tearOffOptional(){([self::GenericExtension|tearOffs::T?]) → dynamic};
tearOffOptional(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
({value: self::GenericExtension|tearOffs::T?}) → dynamic tearOffNamed = self::GenericExtension|get#writeSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
tearOffNamed(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
tearOffNamed(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
<S extends self::GenericExtension|tearOffs::T% = dynamic>(S%) → dynamic genericTearOffRequired = self::GenericExtension|get#genericWriteSetterRequired<self::GenericExtension|tearOffs::T%>(#this);
genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::T%>(value){(self::GenericExtension|tearOffs::T%) → dynamic};
genericTearOffRequired<self::GenericExtension|tearOffs::S%>(value){(self::GenericExtension|tearOffs::S%) → dynamic};
<S extends self::GenericExtension|tearOffs::T% = dynamic>([S?]) → dynamic genericTearOffOptional = self::GenericExtension|get#genericWriteSetterOptional<self::GenericExtension|tearOffs::T%>(#this);
genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T%>(){([self::GenericExtension|tearOffs::T?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S%>(){([self::GenericExtension|tearOffs::S?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::T%>(value){([self::GenericExtension|tearOffs::T?]) → dynamic};
genericTearOffOptional<self::GenericExtension|tearOffs::S%>(value){([self::GenericExtension|tearOffs::S?]) → dynamic};
<S extends self::GenericExtension|tearOffs::T% = dynamic>({value: S?}) → dynamic genericTearOffNamed = self::GenericExtension|get#genericWriteSetterNamed<self::GenericExtension|tearOffs::T%>(#this);
genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T%>(){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S%>(){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::T%>(value: value){({value: self::GenericExtension|tearOffs::T?}) → dynamic};
genericTearOffNamed<self::GenericExtension|tearOffs::S%>(value: value){({value: self::GenericExtension|tearOffs::S?}) → dynamic};
}
static method GenericExtension|get#tearOffs<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T*>* #this) → <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#tearOffs::T* = dynamic>(S* value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T*, S*>(#this, value);
static method GenericExtension|getterCalls<T extends core::Object* = dynamic, S extends self::GenericExtension|getterCalls::T* = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T*>* #this, self::GenericExtension|getterCalls::S* value) → dynamic {
self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::T*>(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T*>(#this){dynamic}.call<self::GenericExtension|getterCalls::S*>(value: value);
static method GenericExtension|get#tearOffs<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#tearOffs::T%> #this) → <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#tearOffs::T% = dynamic>(S% value) → dynamic => self::GenericExtension|tearOffs<self::GenericExtension|get#tearOffs::T%, S%>(#this, value);
static method GenericExtension|getterCalls<T extends core::Object? = dynamic, S extends self::GenericExtension|getterCalls::T% = dynamic>(lowered final self::GenericClass<self::GenericExtension|getterCalls::T%> #this, self::GenericExtension|getterCalls::S% value) → dynamic {
self::GenericExtension|get#tearOffGetterNoArgs<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
self::GenericExtension|get#tearOffGetterGenericRequired<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value);
self::GenericExtension|get#tearOffGetterGenericOptional<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>();
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::T%>(value: value);
self::GenericExtension|get#tearOffGetterGenericNamed<self::GenericExtension|getterCalls::T%>(#this){dynamic}.call<self::GenericExtension|getterCalls::S%>(value: value);
}
static method GenericExtension|get#getterCalls<T extends core::Object* = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T*>* #this) → <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S*) →* dynamic
return <S extends self::GenericExtension|get#getterCalls::T* = dynamic>(S* value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T*, S*>(#this, value);
static method GenericExtension|get#getterCalls<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|get#getterCalls::T%> #this) → <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S%) → dynamic
return <S extends self::GenericExtension|get#getterCalls::T% = dynamic>(S% value) → dynamic => self::GenericExtension|getterCalls<self::GenericExtension|get#getterCalls::T%, S%>(#this, value);
static method main() → dynamic {}
constants {

Some files were not shown because too many files have changed in this diff Show More