mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:07:49 +00:00
[cfe] Implement addHashCode to valueClass transformation
Change-Id: Ie566cee214b63f986e07c84e4ae28bfecc80e0a3 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/162186 Commit-Queue: Javier López-Contreras <jlcontreras@google.com> Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
This commit is contained in:
parent
af110a7aa4
commit
da6cdc55b4
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,15 +11,17 @@ class EmptyClass extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::EmptyClass;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///empty.dartEmptyClass".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,15 +11,17 @@ class EmptyClass extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::EmptyClass;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///empty.dartEmptyClass".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,15 +11,17 @@ class EmptyClass extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::EmptyClass;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///empty.dartEmptyClass".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,15 +11,17 @@ class EmptyClass extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::EmptyClass;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///empty.dartEmptyClass".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,6 +11,8 @@ class A extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///explicit_mixin.dartA".{core::String::hashCode});
|
||||
}
|
||||
class B extends core::Object {
|
||||
synthetic constructor •() → self::B
|
||||
|
@ -37,15 +40,17 @@ class F = self::B with self::C {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::F;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///explicit_mixin.dartF".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,6 +11,8 @@ class A extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///explicit_mixin.dartA".{core::String::hashCode});
|
||||
}
|
||||
class B extends core::Object {
|
||||
synthetic constructor •() → self::B
|
||||
|
@ -32,6 +35,8 @@ class E extends self::B implements self::A /*isEliminatedMixin*/ {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///explicit_mixin.dartA".{core::String::hashCode});
|
||||
}
|
||||
class F extends self::B implements self::C /*isEliminatedMixin*/ {
|
||||
synthetic constructor •() → self::F
|
||||
|
@ -39,15 +44,17 @@ class F extends self::B implements self::C /*isEliminatedMixin*/ {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::F;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///explicit_mixin.dartF".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,6 +11,8 @@ class A extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///explicit_mixin.dartA".{core::String::hashCode});
|
||||
}
|
||||
class B extends core::Object {
|
||||
synthetic constructor •() → self::B
|
||||
|
@ -37,15 +40,17 @@ class F = self::B with self::C {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::F;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///explicit_mixin.dartF".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,6 +11,8 @@ class A extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///explicit_mixin.dartA".{core::String::hashCode});
|
||||
}
|
||||
class B extends core::Object {
|
||||
synthetic constructor •() → self::B
|
||||
|
@ -32,6 +35,8 @@ class E extends self::B implements self::A /*isEliminatedMixin*/ {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///explicit_mixin.dartA".{core::String::hashCode});
|
||||
}
|
||||
class F extends self::B implements self::C /*isEliminatedMixin*/ {
|
||||
synthetic constructor •() → self::F
|
||||
|
@ -39,15 +44,17 @@ class F extends self::B implements self::C /*isEliminatedMixin*/ {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::F;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///explicit_mixin.dartF".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -8,6 +8,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -18,15 +19,17 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_final_field_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -8,6 +8,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -18,15 +19,17 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_final_field_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -8,6 +8,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -18,15 +19,17 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_final_field_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -8,6 +8,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -18,15 +19,17 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_final_field_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -9,6 +9,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -19,6 +20,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_value_extends_value_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
class Cat extends self::Animal {
|
||||
synthetic constructor •() → self::Cat
|
||||
|
@ -28,11 +31,11 @@ class Cat extends self::Animal {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -9,6 +9,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -19,6 +20,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_value_extends_value_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
class Cat extends self::Animal {
|
||||
synthetic constructor •() → self::Cat
|
||||
|
@ -28,11 +31,11 @@ class Cat extends self::Animal {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -9,6 +9,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -19,6 +20,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_value_extends_value_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
class Cat extends self::Animal {
|
||||
synthetic constructor •() → self::Cat
|
||||
|
@ -28,11 +31,11 @@ class Cat extends self::Animal {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -9,6 +9,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -19,6 +20,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_value_extends_value_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
class Cat extends self::Animal {
|
||||
synthetic constructor •() → self::Cat
|
||||
|
@ -28,11 +31,11 @@ class Cat extends self::Animal {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -14,6 +14,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -24,6 +25,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_value_implements_value_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
class Cat extends core::Object implements self::Animal {
|
||||
final field core::int numberOfLegs = null;
|
||||
|
@ -34,11 +37,11 @@ class Cat extends core::Object implements self::Animal {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -14,6 +14,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -24,6 +25,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_value_implements_value_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
class Cat extends core::Object implements self::Animal {
|
||||
final field core::int numberOfLegs = null;
|
||||
|
@ -34,11 +37,11 @@ class Cat extends core::Object implements self::Animal {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -14,6 +14,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -24,6 +25,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_value_implements_value_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
class Cat extends core::Object implements self::Animal {
|
||||
final field core::int numberOfLegs = null;
|
||||
|
@ -34,11 +37,11 @@ class Cat extends core::Object implements self::Animal {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -14,6 +14,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -24,6 +25,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///non_value_implements_value_error.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
class Cat extends core::Object implements self::Animal {
|
||||
final field core::int numberOfLegs = null;
|
||||
|
@ -34,11 +37,11 @@ class Cat extends core::Object implements self::Animal {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -30,6 +30,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -40,6 +41,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///simple.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Animal firstAnimal = invalid-expression "pkg/front_end/testcases/value_class/simple.dart:13:31: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -62,11 +65,11 @@ static method expect(core::Object? expected, core::Object? actual) → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -30,6 +30,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -40,6 +41,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///simple.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Animal firstAnimal = invalid-expression "pkg/front_end/testcases/value_class/simple.dart:13:31: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -62,11 +65,11 @@ static method expect(core::Object? expected, core::Object? actual) → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -30,6 +30,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -40,6 +41,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///simple.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Animal firstAnimal = invalid-expression "pkg/front_end/testcases/value_class/simple.dart:13:31: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -62,11 +65,11 @@ static method expect(core::Object? expected, core::Object? actual) → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -30,6 +30,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -40,6 +41,8 @@ class Animal extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Animal && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Animal}.{self::Animal::numberOfLegs});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine("org-dartlang-testcase:///simple.dartAnimal".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Animal firstAnimal = invalid-expression "pkg/front_end/testcases/value_class/simple.dart:13:31: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -62,11 +65,11 @@ static method expect(core::Object? expected, core::Object? actual) → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -30,6 +30,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -46,6 +47,8 @@ class Cat extends self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Cat}.{self::Animal::numberOfLegs}) && this.{self::Cat::numberOfWhiskers}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_extends_non_value.dartCat".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}), this.{self::Cat::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Cat firstCat = invalid-expression "pkg/front_end/testcases/value_class/value_extends_non_value.dart:18:22: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -68,11 +71,11 @@ static method expect(core::Object? expected, core::Object? actual) → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -30,6 +30,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -46,6 +47,8 @@ class Cat extends self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Cat}.{self::Animal::numberOfLegs}) && this.{self::Cat::numberOfWhiskers}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_extends_non_value.dartCat".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}), this.{self::Cat::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Cat firstCat = invalid-expression "pkg/front_end/testcases/value_class/value_extends_non_value.dart:18:22: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -68,11 +71,11 @@ static method expect(core::Object? expected, core::Object? actual) → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -30,6 +30,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -46,6 +47,8 @@ class Cat extends self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Cat}.{self::Animal::numberOfLegs}) && this.{self::Cat::numberOfWhiskers}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_extends_non_value.dartCat".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}), this.{self::Cat::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Cat firstCat = invalid-expression "pkg/front_end/testcases/value_class/value_extends_non_value.dart:18:22: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -68,11 +71,11 @@ static method expect(core::Object? expected, core::Object? actual) → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -30,6 +30,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -46,6 +47,8 @@ class Cat extends self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat && this.{self::Animal::numberOfLegs}.{core::num::==}(other{self::Cat}.{self::Animal::numberOfLegs}) && this.{self::Cat::numberOfWhiskers}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_extends_non_value.dartCat".{core::String::hashCode}, this.{self::Animal::numberOfLegs}.{core::num::hashCode}), this.{self::Cat::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Cat firstCat = invalid-expression "pkg/front_end/testcases/value_class/value_extends_non_value.dart:18:22: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -68,11 +71,11 @@ static method expect(core::Object? expected, core::Object? actual) → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -13,6 +13,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -28,6 +29,8 @@ class Cat extends self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_extends_non_value_error.dartCat".{core::String::hashCode});
|
||||
}
|
||||
class Animal2 extends core::Object {
|
||||
final field core::int numberOfLegs = null;
|
||||
|
@ -41,15 +44,17 @@ class Cat2 extends self::Animal2 {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat2;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_extends_non_value_error.dartCat2".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -13,6 +13,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -28,6 +29,8 @@ class Cat extends self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_extends_non_value_error.dartCat".{core::String::hashCode});
|
||||
}
|
||||
class Animal2 extends core::Object {
|
||||
final field core::int numberOfLegs = null;
|
||||
|
@ -41,15 +44,17 @@ class Cat2 extends self::Animal2 {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat2;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_extends_non_value_error.dartCat2".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -13,6 +13,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -28,6 +29,8 @@ class Cat extends self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_extends_non_value_error.dartCat".{core::String::hashCode});
|
||||
}
|
||||
class Animal2 extends core::Object {
|
||||
final field core::int numberOfLegs = null;
|
||||
|
@ -41,15 +44,17 @@ class Cat2 extends self::Animal2 {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat2;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_extends_non_value_error.dartCat2".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -13,6 +13,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -28,6 +29,8 @@ class Cat extends self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_extends_non_value_error.dartCat".{core::String::hashCode});
|
||||
}
|
||||
class Animal2 extends core::Object {
|
||||
final field core::int numberOfLegs = null;
|
||||
|
@ -41,15 +44,17 @@ class Cat2 extends self::Animal2 {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat2;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_extends_non_value_error.dartCat2".{core::String::hashCode});
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -71,6 +71,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase-sdk:///pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart";
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
@ -89,6 +90,8 @@ class Cat extends core::Object implements self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat && this.{self::Cat::numberOfLegs}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfLegs}) && this.{self::Cat::numberOfWhiskers}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_implements_non_value.dartCat".{core::String::hashCode}, this.{self::Cat::numberOfLegs}.{core::num::hashCode}), this.{self::Cat::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
abstract class Animal2 extends core::Object {
|
||||
synthetic constructor •() → self::Animal2
|
||||
|
@ -104,6 +107,8 @@ class Cat2 extends core::Object implements self::Animal2 {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat2 && this.{self::Cat2::numberOfLegs}.{core::num::==}(other{self::Cat2}.{self::Cat2::numberOfLegs}) && this.{self::Cat2::numberOfWhiskers}.{core::num::==}(other{self::Cat2}.{self::Cat2::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_implements_non_value.dartCat2".{core::String::hashCode}, this.{self::Cat2::numberOfLegs}.{core::num::hashCode}), this.{self::Cat2::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Cat firstCat = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:30:22: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -201,11 +206,11 @@ static method main() → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self3;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self3::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -71,6 +71,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase-sdk:///pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart";
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
@ -89,6 +90,8 @@ class Cat extends core::Object implements self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat && this.{self::Cat::numberOfLegs}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfLegs}) && this.{self::Cat::numberOfWhiskers}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_implements_non_value.dartCat".{core::String::hashCode}, this.{self::Cat::numberOfLegs}.{core::num::hashCode}), this.{self::Cat::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
abstract class Animal2 extends core::Object {
|
||||
synthetic constructor •() → self::Animal2
|
||||
|
@ -104,6 +107,8 @@ class Cat2 extends core::Object implements self::Animal2 {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat2 && this.{self::Cat2::numberOfLegs}.{core::num::==}(other{self::Cat2}.{self::Cat2::numberOfLegs}) && this.{self::Cat2::numberOfWhiskers}.{core::num::==}(other{self::Cat2}.{self::Cat2::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_implements_non_value.dartCat2".{core::String::hashCode}, this.{self::Cat2::numberOfLegs}.{core::num::hashCode}), this.{self::Cat2::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Cat firstCat = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:30:22: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -201,11 +206,11 @@ static method main() → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self3;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self3::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -71,6 +71,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase-sdk:///pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart";
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
@ -89,6 +90,8 @@ class Cat extends core::Object implements self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat && this.{self::Cat::numberOfLegs}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfLegs}) && this.{self::Cat::numberOfWhiskers}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_implements_non_value.dartCat".{core::String::hashCode}, this.{self::Cat::numberOfLegs}.{core::num::hashCode}), this.{self::Cat::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
abstract class Animal2 extends core::Object {
|
||||
synthetic constructor •() → self::Animal2
|
||||
|
@ -104,6 +107,8 @@ class Cat2 extends core::Object implements self::Animal2 {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat2 && this.{self::Cat2::numberOfLegs}.{core::num::==}(other{self::Cat2}.{self::Cat2::numberOfLegs}) && this.{self::Cat2::numberOfWhiskers}.{core::num::==}(other{self::Cat2}.{self::Cat2::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_implements_non_value.dartCat2".{core::String::hashCode}, this.{self::Cat2::numberOfLegs}.{core::num::hashCode}), this.{self::Cat2::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Cat firstCat = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:30:22: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -201,11 +206,11 @@ static method main() → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self3;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self3::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -71,6 +71,7 @@ library /*isNonNullableByDefault*/;
|
|||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase-sdk:///pkg/front_end/testcases/nnbd_mixed/nnbd_opt_out_language_version.dart";
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
@ -89,6 +90,8 @@ class Cat extends core::Object implements self::Animal {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat && this.{self::Cat::numberOfLegs}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfLegs}) && this.{self::Cat::numberOfWhiskers}.{core::num::==}(other{self::Cat}.{self::Cat::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_implements_non_value.dartCat".{core::String::hashCode}, this.{self::Cat::numberOfLegs}.{core::num::hashCode}), this.{self::Cat::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
abstract class Animal2 extends core::Object {
|
||||
synthetic constructor •() → self::Animal2
|
||||
|
@ -104,6 +107,8 @@ class Cat2 extends core::Object implements self::Animal2 {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::Cat2 && this.{self::Cat2::numberOfLegs}.{core::num::==}(other{self::Cat2}.{self::Cat2::numberOfLegs}) && this.{self::Cat2::numberOfWhiskers}.{core::num::==}(other{self::Cat2}.{self::Cat2::numberOfWhiskers});
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish(val::JenkinsSmiHash::combine(val::JenkinsSmiHash::combine("org-dartlang-testcase:///value_implements_non_value.dartCat2".{core::String::hashCode}, this.{self::Cat2::numberOfLegs}.{core::num::hashCode}), this.{self::Cat2::numberOfWhiskers}.{core::num::hashCode}));
|
||||
}
|
||||
static method main() → dynamic {
|
||||
self::Cat firstCat = invalid-expression "pkg/front_end/testcases/value_class/value_implements_non_value.dart:30:22: Error: No named parameter with the name 'numberOfLegs'.
|
||||
|
@ -201,11 +206,11 @@ static method main() → dynamic {
|
|||
}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self3;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self3::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,6 +11,8 @@ class A extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_mixin_error.dartA".{core::String::hashCode});
|
||||
}
|
||||
class B extends core::Object {
|
||||
synthetic constructor •() → self::B
|
||||
|
@ -39,11 +42,11 @@ class D extends self::_D&A&B {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,6 +11,8 @@ class A extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_mixin_error.dartA".{core::String::hashCode});
|
||||
}
|
||||
class B extends core::Object {
|
||||
synthetic constructor •() → self::B
|
||||
|
@ -22,6 +25,8 @@ abstract class _C&B&A extends self::B implements self::A /*isAnonymousMixin,isEl
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_mixin_error.dartA".{core::String::hashCode});
|
||||
}
|
||||
class C extends self::_C&B&A {
|
||||
synthetic constructor •() → self::C
|
||||
|
@ -41,11 +46,11 @@ class D extends self::_D&A&B {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,6 +11,8 @@ class A extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_mixin_error.dartA".{core::String::hashCode});
|
||||
}
|
||||
class B extends core::Object {
|
||||
synthetic constructor •() → self::B
|
||||
|
@ -39,11 +42,11 @@ class D extends self::_D&A&B {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "value_class_support_lib.dart" as val;
|
||||
|
||||
import "org-dartlang-testcase:///value_class_support_lib.dart";
|
||||
|
||||
|
@ -10,6 +11,8 @@ class A extends core::Object {
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_mixin_error.dartA".{core::String::hashCode});
|
||||
}
|
||||
class B extends core::Object {
|
||||
synthetic constructor •() → self::B
|
||||
|
@ -22,6 +25,8 @@ abstract class _C&B&A extends self::B implements self::A /*isAnonymousMixin,isEl
|
|||
;
|
||||
operator /*isNullableByDefault*/ ==(core::Object other) → core::bool
|
||||
return other is self::A;
|
||||
get /*isNullableByDefault*/ hashCode() → core::int
|
||||
return val::JenkinsSmiHash::finish("org-dartlang-testcase:///value_mixin_error.dartA".{core::String::hashCode});
|
||||
}
|
||||
class C extends self::_C&B&A {
|
||||
synthetic constructor •() → self::C
|
||||
|
@ -41,11 +46,11 @@ class D extends self::_D&A&B {
|
|||
static method main() → dynamic {}
|
||||
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self2;
|
||||
import self as val;
|
||||
import "dart:core" as core;
|
||||
|
||||
class JenkinsSmiHash extends core::Object {
|
||||
synthetic constructor •() → self2::JenkinsSmiHash
|
||||
synthetic constructor •() → val::JenkinsSmiHash
|
||||
: super core::Object::•()
|
||||
;
|
||||
static method combine(core::int hash, core::int value) → core::int {
|
||||
|
|
|
@ -27,25 +27,136 @@ abstract class ClassScanner<Y extends TreeNode> implements Scanner<Class, Y> {
|
|||
ScanResult<Class, Y> scan(TreeNode node) {
|
||||
ScanResult<Class, Y> result = new ScanResult();
|
||||
result.targets = new Map();
|
||||
|
||||
if (node is Class) {
|
||||
if (predicate(node)) {
|
||||
result.targets[node] = next?.scan(node);
|
||||
}
|
||||
} else if (node is Library) {
|
||||
for (Class cls in node.classes) {
|
||||
if (predicate(cls)) {
|
||||
result.targets[cls] = next?.scan(cls);
|
||||
}
|
||||
}
|
||||
_scanLibrary(node, result);
|
||||
} else if (node is Component) {
|
||||
for (Library library in node.libraries) {
|
||||
for (Class cls in library.classes) {
|
||||
if (predicate(cls)) {
|
||||
result.targets[cls] = next?.scan(cls);
|
||||
}
|
||||
}
|
||||
}
|
||||
_scanComponent(node, result);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void _scanLibrary(Library library, ScanResult<Class, Y> result) {
|
||||
for (Class cls in library.classes) {
|
||||
if (predicate(cls)) {
|
||||
result.targets[cls] = next?.scan(cls);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _scanComponent(Component component, ScanResult<Class, Y> result) {
|
||||
for (Library library in component.libraries) {
|
||||
_scanLibrary(library, result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
abstract class FieldScanner<Y extends TreeNode> implements Scanner<Field, Y> {
|
||||
final Scanner<Y, TreeNode> next;
|
||||
|
||||
FieldScanner(this.next);
|
||||
|
||||
bool predicate(Field node);
|
||||
|
||||
ScanResult<Field, Y> scan(TreeNode node) {
|
||||
ScanResult<Field, Y> result = new ScanResult();
|
||||
result.targets = new Map();
|
||||
|
||||
if (node is Field) {
|
||||
if (predicate(node)) {
|
||||
result.targets[node] = next?.scan(node);
|
||||
}
|
||||
} else if (node is Class) {
|
||||
_scanClass(node, result);
|
||||
} else if (node is Library) {
|
||||
_scanLibrary(node, result);
|
||||
} else if (node is Component) {
|
||||
_scanComponent(node, result);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void _scanClass(Class cls, ScanResult<Field, Y> result) {
|
||||
for (Field field in cls.fields) {
|
||||
if (predicate(field)) {
|
||||
result.targets[field] = next?.scan(field);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _scanLibrary(Library library, ScanResult<Field, Y> result) {
|
||||
for (Class cls in library.classes) {
|
||||
_scanClass(cls, result);
|
||||
}
|
||||
for (Field field in library.fields) {
|
||||
if (predicate(field)) {
|
||||
result.targets[field] = next?.scan(field);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _scanComponent(Component component, ScanResult<Field, Y> result) {
|
||||
for (Library library in component.libraries) {
|
||||
_scanLibrary(library, result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
abstract class ProcedureScanner<Y extends TreeNode>
|
||||
implements Scanner<Procedure, Y> {
|
||||
final Scanner<Y, TreeNode> next;
|
||||
|
||||
ProcedureScanner(this.next);
|
||||
|
||||
bool predicate(Procedure node);
|
||||
|
||||
ScanResult<Procedure, Y> scan(TreeNode node) {
|
||||
ScanResult<Procedure, Y> result = new ScanResult();
|
||||
result.targets = new Map();
|
||||
|
||||
if (node is Procedure) {
|
||||
if (predicate(node)) {
|
||||
result.targets[node] = next?.scan(node);
|
||||
}
|
||||
} else if (node is Class) {
|
||||
_scanClass(node, result);
|
||||
} else if (node is Library) {
|
||||
_scanLibrary(node, result);
|
||||
} else if (node is Component) {
|
||||
_scanComponent(node, result);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void _scanClass(Class cls, ScanResult<Procedure, Y> result) {
|
||||
for (Procedure procedure in cls.procedures) {
|
||||
if (predicate(procedure)) {
|
||||
result.targets[procedure] = next?.scan(procedure);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _scanLibrary(Library library, ScanResult<Procedure, Y> result) {
|
||||
for (Class cls in library.classes) {
|
||||
_scanClass(cls, result);
|
||||
}
|
||||
for (Procedure procedure in library.procedures) {
|
||||
if (predicate(procedure)) {
|
||||
result.targets[procedure] = next?.scan(procedure);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _scanComponent(Component component, ScanResult<Procedure, Y> result) {
|
||||
for (Library library in component.libraries) {
|
||||
_scanLibrary(library, result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,6 +27,22 @@ class ValueClassScanner extends ClassScanner<Null> {
|
|||
}
|
||||
}
|
||||
|
||||
class JenkinsClassScanner extends ClassScanner<Procedure> {
|
||||
JenkinsClassScanner(Scanner<Procedure, TreeNode> next) : super(next);
|
||||
|
||||
bool predicate(Class node) {
|
||||
return node.name == "JenkinsSmiHash";
|
||||
}
|
||||
}
|
||||
|
||||
class HashCombineMethodsScanner extends ProcedureScanner<Null> {
|
||||
HashCombineMethodsScanner() : super(null);
|
||||
|
||||
bool predicate(Procedure node) {
|
||||
return node.name.name == "combine" || node.name.name == "finish";
|
||||
}
|
||||
}
|
||||
|
||||
void transformComponent(
|
||||
Component node, CoreTypes coreTypes, ClassHierarchy hierarchy) {
|
||||
ValueClassScanner scanner = new ValueClassScanner();
|
||||
|
@ -40,7 +56,7 @@ void transformValueClass(
|
|||
Class cls, CoreTypes coreTypes, ClassHierarchy hierarchy) {
|
||||
addConstructor(cls, coreTypes);
|
||||
addEqualsOperator(cls, coreTypes, hierarchy);
|
||||
// addHashCode(cls, coreTypes);
|
||||
addHashCode(cls, coreTypes, hierarchy);
|
||||
// addCopyWith(cls);
|
||||
}
|
||||
|
||||
|
@ -170,34 +186,90 @@ void addEqualsOperator(
|
|||
cls.addMember(equalsOperator);
|
||||
}
|
||||
|
||||
/*
|
||||
void addHashCode(Class cls, CoreTypes coreTypes) {
|
||||
Map<String, VariableDeclaration> environment = Map.fromIterable(cls.fields,
|
||||
key: (f) => f.name.name,
|
||||
value: (f) => VariableDeclaration(f.name.name, type: f.type));
|
||||
void addHashCode(Class cls, CoreTypes coreTypes, ClassHierarchy hierarchy) {
|
||||
for (Procedure procedure in cls.procedures) {
|
||||
if (procedure.kind == ProcedureKind.Getter &&
|
||||
procedure.name.name == "hashCode") {
|
||||
// hashCode getter is already implemented, spec is to do nothing
|
||||
return;
|
||||
}
|
||||
}
|
||||
DartType returnType = cls.enclosingLibrary.isNonNullableByDefault
|
||||
? coreTypes.intNonNullableRawType
|
||||
: coreTypes.intLegacyRawType;
|
||||
|
||||
VariableDeclaration other = VariableDeclaration("other");
|
||||
Constructor superConstructor = null;
|
||||
for (Constructor constructor in cls.superclass.constructors) {
|
||||
if (constructor.name.name == "") {
|
||||
superConstructor = constructor;
|
||||
}
|
||||
}
|
||||
|
||||
var returnType = cls.enclosingLibrary.isNonNullableByDefault
|
||||
? coreTypes.boolNonNullableRawType
|
||||
: coreTypes.boolLegacyRawType;
|
||||
Procedure hashCombine, hashFinish;
|
||||
HashCombineMethodsScanner hashCombineMethodsScanner =
|
||||
new HashCombineMethodsScanner();
|
||||
JenkinsClassScanner jenkinsScanner =
|
||||
new JenkinsClassScanner(hashCombineMethodsScanner);
|
||||
ScanResult<Class, Procedure> hashMethodsResult =
|
||||
jenkinsScanner.scan(cls.enclosingLibrary.enclosingComponent);
|
||||
for (Class clazz in hashMethodsResult.targets.keys) {
|
||||
for (Procedure procedure in hashMethodsResult.targets[clazz].targets.keys) {
|
||||
if (procedure.name.name == "combine") hashCombine = procedure;
|
||||
if (procedure.name.name == "finish") hashFinish = procedure;
|
||||
}
|
||||
}
|
||||
|
||||
List<VariableDeclaration> allVariables = superConstructor
|
||||
.function.namedParameters
|
||||
.map<VariableDeclaration>(
|
||||
(f) => VariableDeclaration(f.name, type: f.type))
|
||||
.toList()
|
||||
..addAll(cls.fields.map<VariableDeclaration>(
|
||||
(f) => VariableDeclaration(f.name.name, type: f.type)));
|
||||
|
||||
Map<VariableDeclaration, Member> targetsHashcode = new Map();
|
||||
Map<VariableDeclaration, Member> targets = new Map();
|
||||
for (VariableDeclaration variable in allVariables) {
|
||||
Member target = coreTypes.objectEquals;
|
||||
Member targetHashcode = coreTypes.objectEquals;
|
||||
DartType fieldsType = variable.type;
|
||||
if (fieldsType is InterfaceType) {
|
||||
targetHashcode =
|
||||
hierarchy.getInterfaceMember(fieldsType.classNode, Name("hashCode"));
|
||||
target = hierarchy.getInterfaceMember(cls, Name(variable.name));
|
||||
}
|
||||
targetsHashcode[variable] = targetHashcode;
|
||||
targets[variable] = target;
|
||||
}
|
||||
cls.addMember(Procedure(
|
||||
Name("hashCode"),
|
||||
ProcedureKind.Getter,
|
||||
FunctionNode(ReturnStatement(cls.fields
|
||||
.map((f) => DirectPropertyGet(
|
||||
VariableGet(environment[f.name.name]),
|
||||
Procedure(Name("hashCode"), ProcedureKind.Getter,
|
||||
null) // TODO(jlcontreras): Add ref to the real hashCode getter, dont create a new one
|
||||
))
|
||||
.toList()
|
||||
.fold(
|
||||
IntLiteral(0),
|
||||
(previousValue, element) => MethodInvocation(
|
||||
previousValue, Name("*"), Arguments([element])))))));
|
||||
FunctionNode(
|
||||
ReturnStatement(StaticInvocation(
|
||||
hashFinish,
|
||||
Arguments([
|
||||
allVariables
|
||||
.map((f) => (PropertyGet(
|
||||
PropertyGet(ThisExpression(), Name(f.name), targets[f]),
|
||||
Name("hashCode"),
|
||||
targetsHashcode[f])))
|
||||
.fold(
|
||||
PropertyGet(
|
||||
StringLiteral(
|
||||
cls.enclosingLibrary.importUri.toString() +
|
||||
cls.name),
|
||||
Name("hashCode"),
|
||||
hierarchy.getInterfaceMember(
|
||||
coreTypes.stringClass, Name("hashCode"))),
|
||||
(previousValue, element) => StaticInvocation(
|
||||
hashCombine, Arguments([previousValue, element])))
|
||||
]))),
|
||||
returnType: returnType),
|
||||
fileUri: cls.fileUri)
|
||||
..fileOffset = cls.fileOffset);
|
||||
}
|
||||
|
||||
/*
|
||||
void addCopyWith(Class cls) {
|
||||
Map<String, VariableDeclaration> environment = Map.fromIterable(cls.fields,
|
||||
key: (f) => f.name.name,
|
||||
|
@ -228,16 +300,3 @@ void addCopyWith(Class cls) {
|
|||
cls.fields.map((f) => environment[f.name.name]).toList())));
|
||||
}
|
||||
*/
|
||||
|
||||
bool isValueClass(Class cls) {
|
||||
for (Expression annotation in cls.annotations) {
|
||||
if (annotation is ConstantExpression &&
|
||||
annotation.constant is StringConstant) {
|
||||
StringConstant constant = annotation.constant;
|
||||
if (constant.value == 'valueClass') {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue