[cfe] Handle static type of access on Never

Closes #41273

Change-Id: Ia236481ab47033198d7952086cdf5c9c8f5a34b7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142366
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
This commit is contained in:
Johnni Winther
2020-04-08 08:46:02 +00:00
committed by commit-bot@chromium.org
parent a90b845444
commit 0d16ff6d86
22 changed files with 667 additions and 143 deletions
@@ -1036,23 +1036,10 @@ class TypeInferrerImpl implements TypeInferrer {
if (receiverType is FunctionType && name == callName) {
return const ObjectAccessTarget.callFunction();
}
Class classNode = receiverType is InterfaceType
? receiverType.classNode
: coreTypes.objectClass;
Member interfaceMember =
_getInterfaceMember(classNode, name, setter, fileOffset);
ObjectAccessTarget target;
if (interfaceMember != null) {
target = new ObjectAccessTarget.interfaceMember(interfaceMember);
} else if (receiverType is DynamicType) {
target = const ObjectAccessTarget.dynamic();
} else if (receiverType is NeverType) {
switch (receiverType.nullability) {
case Nullability.nonNullable:
target = const ObjectAccessTarget.never();
break;
return const ObjectAccessTarget.never();
case Nullability.nullable:
case Nullability.legacy:
// Never? and Never* are equivalent to Null.
@@ -1066,6 +1053,17 @@ class TypeInferrerImpl implements TypeInferrer {
fileOffset,
library.fileUri);
}
}
Class classNode = receiverType is InterfaceType
? receiverType.classNode
: coreTypes.objectClass;
Member interfaceMember =
_getInterfaceMember(classNode, name, setter, fileOffset);
ObjectAccessTarget target;
if (interfaceMember != null) {
target = new ObjectAccessTarget.interfaceMember(interfaceMember);
} else if (receiverType is DynamicType) {
target = const ObjectAccessTarget.dynamic();
} else if (receiverType is InvalidType) {
target = const ObjectAccessTarget.invalid();
} else if (receiverType is InterfaceType &&
@@ -1940,6 +1938,10 @@ class TypeInferrerImpl implements TypeInferrer {
Member equalsMember =
findInterfaceMember(variable.type, equalsName, variable.fileOffset)
.member;
// Ensure operator == member even for `Never`.
equalsMember ??= findInterfaceMember(const DynamicType(), equalsName, -1,
instrumented: false)
.member;
return new NullAwareGuard(
variable, variable.fileOffset, equalsMember, this);
}
@@ -2736,7 +2738,7 @@ class TypeInferrerImpl implements TypeInferrer {
isImplicitCall: isImplicitCall);
assert(name != equalsName);
return createNullAwareExpressionInferenceResult(
result.inferredType,
const NeverType(Nullability.nonNullable),
result.applyResult(new MethodInvocation(receiver, name, arguments)
..fileOffset = fileOffset),
nullAwareGuards);
@@ -689,6 +689,7 @@ nulls
o
oauth
obj
obligated
observatory
observe
obstruct
@@ -0,0 +1,63 @@
library;
import self as self;
import "dart:core" as core;
import "issue41210_lib1.dart" as iss;
import "org-dartlang-testcase:///issue41210_lib1.dart";
abstract class _C&Object&A extends core::Object implements iss::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •() → self::_C&Object&A*
: super core::Object::•()
;
method /* from org-dartlang-testcase:///issue41210_lib1.dart */ method({core::String* s = #C1}) → core::String*
return s;
}
abstract class _C&Object&A&B extends self::_C&Object&A implements iss::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •() → self::_C&Object&A&B*
: super self::_C&Object&A::•()
;
abstract forwarding-stub method method({core::String* s = #C1}) → core::String*;
}
class C extends self::_C&Object&A&B {
synthetic constructor •() → self::C*
: super self::_C&Object&A&B::•()
;
abstract forwarding-stub method method({core::String* s = #C1}) → core::String*;
}
static method main() → dynamic {
core::print(new self::C::•().{self::C::method}());
}
library;
import self as iss;
import "dart:core" as core;
import "issue41210_lib2.dart" as iss2;
import "org-dartlang-testcase:///issue41210_lib2.dart";
abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/ {
method method({core::String* s = #C1}) → core::String*
return s;
}
abstract class B extends core::Object implements iss2::Interface {
synthetic constructor •() → iss::B*
: super core::Object::•()
;
abstract member-signature method method() → core::String*;
}
static method main() → void {}
library /*isNonNullableByDefault*/;
import self as iss2;
import "dart:core" as core;
abstract class Interface extends core::Object {
synthetic constructor •() → iss2::Interface
: super core::Object::•()
;
abstract method method() → core::String;
}
constants {
#C1 = "hello"
}
@@ -0,0 +1,63 @@
library;
import self as self;
import "dart:core" as core;
import "issue41210_lib1.dart" as iss;
import "org-dartlang-testcase:///issue41210_lib1.dart";
abstract class _C&Object&A extends core::Object implements iss::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •() → self::_C&Object&A*
: super core::Object::•()
;
method /* from org-dartlang-testcase:///issue41210_lib1.dart */ method({core::String* s = #C1}) → core::String*
return s;
}
abstract class _C&Object&A&B extends self::_C&Object&A implements iss::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •() → self::_C&Object&A&B*
: super self::_C&Object&A::•()
;
abstract forwarding-stub method method({core::String* s = #C1}) → core::String*;
}
class C extends self::_C&Object&A&B {
synthetic constructor •() → self::C*
: super self::_C&Object&A&B::•()
;
abstract forwarding-stub method method({core::String* s = #C1}) → core::String*;
}
static method main() → dynamic {
core::print(new self::C::•().{self::C::method}());
}
library;
import self as iss;
import "dart:core" as core;
import "issue41210_lib2.dart" as iss2;
import "org-dartlang-testcase:///issue41210_lib2.dart";
abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/ {
method method({core::String* s = #C1}) → core::String*
return s;
}
abstract class B extends core::Object implements iss2::Interface {
synthetic constructor •() → iss::B*
: super core::Object::•()
;
abstract member-signature method method() → core::String*;
}
static method main() → void {}
library /*isNonNullableByDefault*/;
import self as iss2;
import "dart:core" as core;
abstract class Interface extends core::Object {
synthetic constructor •() → iss2::Interface
: super core::Object::•()
;
abstract method method() → core::String;
}
constants {
#C1 = "hello"
}
@@ -0,0 +1,62 @@
library;
import self as self;
import "dart:core" as core;
import "issue41210b_lib1.dart" as iss;
import "org-dartlang-testcase:///issue41210b_lib1.dart";
abstract class _C&Object&A extends core::Object implements iss::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •() → self::_C&Object&A*
: super core::Object::•()
;
method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ method({core::String* s = #C1}) → core::String*
return s;
}
abstract class _C&Object&A&B extends self::_C&Object&A implements iss::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •() → self::_C&Object&A&B*
: super self::_C&Object&A::•()
;
abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ method() → core::String*;
}
class C extends self::_C&Object&A&B {
synthetic constructor •() → self::C*
: super self::_C&Object&A&B::•()
;
}
static method main() → dynamic {
core::print(new self::C::•().{iss::A::method}());
}
library;
import self as iss;
import "dart:core" as core;
import "issue41210b_lib2.dart" as iss2;
import "org-dartlang-testcase:///issue41210b_lib2.dart";
abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/ {
method method({core::String* s = #C1}) → core::String*
return s;
}
abstract class B extends core::Object implements iss2::Interface {
synthetic constructor •() → iss::B*
: super core::Object::•()
;
abstract member-signature method method() → core::String*;
}
static method main() → void {}
library /*isNonNullableByDefault*/;
import self as iss2;
import "dart:core" as core;
abstract class Interface extends core::Object {
synthetic constructor •() → iss2::Interface
: super core::Object::•()
;
abstract method method() → core::String;
}
constants {
#C1 = "hello"
}
@@ -0,0 +1,62 @@
library;
import self as self;
import "dart:core" as core;
import "issue41210b_lib1.dart" as iss;
import "org-dartlang-testcase:///issue41210b_lib1.dart";
abstract class _C&Object&A extends core::Object implements iss::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •() → self::_C&Object&A*
: super core::Object::•()
;
method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ method({core::String* s = #C1}) → core::String*
return s;
}
abstract class _C&Object&A&B extends self::_C&Object&A implements iss::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/ {
const synthetic constructor •() → self::_C&Object&A&B*
: super self::_C&Object&A::•()
;
abstract member-signature method /* from org-dartlang-testcase:///issue41210b_lib1.dart */ method() → core::String*;
}
class C extends self::_C&Object&A&B {
synthetic constructor •() → self::C*
: super self::_C&Object&A&B::•()
;
}
static method main() → dynamic {
core::print(new self::C::•().{iss::A::method}());
}
library;
import self as iss;
import "dart:core" as core;
import "issue41210b_lib2.dart" as iss2;
import "org-dartlang-testcase:///issue41210b_lib2.dart";
abstract class A extends core::Object implements iss2::Interface /*isMixinDeclaration*/ {
method method({core::String* s = #C1}) → core::String*
return s;
}
abstract class B extends core::Object implements iss2::Interface {
synthetic constructor •() → iss::B*
: super core::Object::•()
;
abstract member-signature method method() → core::String*;
}
static method main() → void {}
library /*isNonNullableByDefault*/;
import self as iss2;
import "dart:core" as core;
abstract class Interface extends core::Object {
synthetic constructor •() → iss2::Interface
: super core::Object::•()
;
abstract method method() → core::String;
}
constants {
#C1 = "hello"
}
@@ -0,0 +1,32 @@
// 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.
void test(var x) {
if (x is Never) {
Never n1 = x.toString();
Never n2 = x.runtimeType;
Never n3 = x.someGetter;
Never n4 = x.someMethod();
Never n5 = x + x;
Never n6 = x[x];
Never n7 = x();
Never n8 = x.runtimeType();
Never n9 = x.toString;
x.runtimeType = Object;
x.toString = () => '';
var v1 = x.toString();
var v2 = x.runtimeType;
var v3 = x.someGetter;
var v4 = x.someMethod();
var v5 = x + x;
var v6 = x[x];
var v7 = x();
var v8 = x.runtimeType();
var v9 = x.toString;
}
}
main() {
test(null);
}
@@ -0,0 +1,7 @@
library /*isNonNullableByDefault*/;
import self as self;
static method test(dynamic x) → void
;
static method main() → dynamic
;
@@ -0,0 +1,31 @@
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
static method test(dynamic x) → void {
if(x is{ForNonNullableByDefault} Never) {
Never n1 = x{Never}.toString();
Never n2 = x{Never}.runtimeType;
Never n3 = x{Never}.someGetter;
Never n4 = x{Never}.someMethod();
Never n5 = x{Never}.+(x{Never});
Never n6 = x{Never}.[](x{Never});
Never n7 = x{Never}.call();
Never n8 = x{Never}.runtimeType();
Never n9 = x{Never}.toString;
x{Never}.runtimeType = core::Object;
x{Never}.toString = () → core::String => "";
Never v1 = x{Never}.toString();
Never v2 = x{Never}.runtimeType;
Never v3 = x{Never}.someGetter;
Never v4 = x{Never}.someMethod();
Never v5 = x{Never}.+(x{Never});
Never v6 = x{Never}.[](x{Never});
Never v7 = x{Never}.call();
Never v8 = x{Never}.runtimeType();
Never v9 = x{Never}.toString;
}
}
static method main() → dynamic {
self::test(null);
}
@@ -0,0 +1,31 @@
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
static method test(dynamic x) → void {
if(x is{ForNonNullableByDefault} Never) {
Never n1 = x{Never}.toString();
Never n2 = x{Never}.runtimeType;
Never n3 = x{Never}.someGetter;
Never n4 = x{Never}.someMethod();
Never n5 = x{Never}.+(x{Never});
Never n6 = x{Never}.[](x{Never});
Never n7 = x{Never}.call();
Never n8 = x{Never}.runtimeType();
Never n9 = x{Never}.toString;
x{Never}.runtimeType = core::Object;
x{Never}.toString = () → core::String => "";
Never v1 = x{Never}.toString();
Never v2 = x{Never}.runtimeType;
Never v3 = x{Never}.someGetter;
Never v4 = x{Never}.someMethod();
Never v5 = x{Never}.+(x{Never});
Never v6 = x{Never}.[](x{Never});
Never v7 = x{Never}.call();
Never v8 = x{Never}.runtimeType();
Never v9 = x{Never}.toString;
}
}
static method main() → dynamic {
self::test(null);
}
@@ -0,0 +1,31 @@
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
static method test(dynamic x) → void {
if(x is{ForNonNullableByDefault} Never) {
Never n1 = x{Never}.toString();
Never n2 = x{Never}.runtimeType;
Never n3 = x{Never}.someGetter;
Never n4 = x{Never}.someMethod();
Never n5 = x{Never}.+(x{Never});
Never n6 = x{Never}.[](x{Never});
Never n7 = x{Never}.call();
Never n8 = x{Never}.runtimeType();
Never n9 = x{Never}.toString;
x{Never}.runtimeType = core::Object;
x{Never}.toString = () → core::String => "";
Never v1 = x{Never}.toString();
Never v2 = x{Never}.runtimeType;
Never v3 = x{Never}.someGetter;
Never v4 = x{Never}.someMethod();
Never v5 = x{Never}.+(x{Never});
Never v6 = x{Never}.[](x{Never});
Never v7 = x{Never}.call();
Never v8 = x{Never}.runtimeType();
Never v9 = x{Never}.toString;
}
}
static method main() → dynamic {
self::test(null);
}
@@ -0,0 +1,31 @@
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
static method test(dynamic x) → void {
if(x is{ForNonNullableByDefault} Never) {
Never n1 = x{Never}.toString();
Never n2 = x{Never}.runtimeType;
Never n3 = x{Never}.someGetter;
Never n4 = x{Never}.someMethod();
Never n5 = x{Never}.+(x{Never});
Never n6 = x{Never}.[](x{Never});
Never n7 = x{Never}.call();
Never n8 = x{Never}.runtimeType();
Never n9 = x{Never}.toString;
x{Never}.runtimeType = core::Object;
x{Never}.toString = () → core::String => "";
Never v1 = x{Never}.toString();
Never v2 = x{Never}.runtimeType;
Never v3 = x{Never}.someGetter;
Never v4 = x{Never}.someMethod();
Never v5 = x{Never}.+(x{Never});
Never v6 = x{Never}.[](x{Never});
Never v7 = x{Never}.call();
Never v8 = x{Never}.runtimeType();
Never v9 = x{Never}.toString;
}
}
static method main() → dynamic {
self::test(null);
}
@@ -21,6 +21,12 @@ foo(Never x, Never? y) {
y?.[42]; // Not an error.
y?.[42] = 42; // Not an error.
x?.foo(); // Warning.
x?.bar; // Warning.
x?.baz = 42; // Warning.
x?.[42]; // Warning.
x?.[42] = 42; // Warning.
y.foo(); // Error.
y.bar; // Error.
y.baz = 42; // Error.
@@ -2,69 +2,89 @@ library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:24:5: Error: The method 'foo' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:24:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.foo(); // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.bar; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.baz = 42; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:27:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.[42]; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.[42] = 42; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
// y.foo(); // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: The getter 'bar' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
// y.bar; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
// Try accessing using ?. instead.
// y.bar; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: The setter 'baz' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
// y.baz = 42; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
// Try accessing using ?. instead.
// y.baz = 42; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:27:4: Error: The method 'call' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
// y(); // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: The operator '+' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '+' operator.
// y++; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// y++; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: The operator '+' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '+' operator.
// y += 1; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// y += 1; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: The operator '[]' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '[]' operator.
// y[42]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
// y[42]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: The operator '[]=' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '[]=' operator.
// y[42] = 42; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
// y[42] = 42; // Error.
// ^
//
@@ -82,55 +102,60 @@ static method foo(Never x, Never? y) → dynamic {
x.[]=(42, 42);
x = x.+(1);
x = x.+(1);
let final Never? #t1 = y in #t1.{core::Object::==}(null) ?{dynamic} null : #t1{Never}.foo();
let final Never? #t1 = y in #t1.{core::Object::==}(null) ?{core::Null?} null : #t1{Never}.foo();
let final Never? #t2 = y in #t2.{core::Object::==}(null) ?{core::Null?} null : #t2{Never}.bar;
let final Never? #t3 = y in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{Never}.baz = 42;
let final Never? #t4 = y in #t4.{core::Object::==}(null) ?{dynamic} null : #t4{Never}.call();
let final Never? #t4 = y in #t4.{core::Object::==}(null) ?{core::Null?} null : #t4{Never}.call();
let final Never? #t5 = y in #t5.{core::Object::==}(null) ?{core::Null?} null : #t5{Never}.[](42);
let final Never? #t6 = y in #t6.{core::Object::==}(null) ?{core::int?} null : #t6{Never}.[]=(42, 42);
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:24:5: Error: The method 'foo' isn't defined for the class 'Never'.
let final Never #t7 = x in #t7.{core::Object::==}(null) ?{core::Null?} null : #t7.foo();
let final Never #t8 = x in #t8.{core::Object::==}(null) ?{core::Null?} null : #t8.bar;
let final Never #t9 = x in #t9.{core::Object::==}(null) ?{core::int?} null : #t9.baz = 42;
let final Never #t10 = x in #t10.{core::Object::==}(null) ?{core::Null?} null : #t10.[](42);
let final Never #t11 = x in #t11.{core::Object::==}(null) ?{core::int?} null : #t11.[]=(42, 42);
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
y.foo(); // Error.
^^^";
let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
Try accessing using ?. instead.
y.bar; // Error.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: The getter 'bar' isn't defined for the class 'Never'.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
y.bar; // Error.
^^^";
let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
Try accessing using ?. instead.
y.baz = 42; // Error.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: The setter 'baz' isn't defined for the class 'Never'.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
y.baz = 42; // Error.
^^^";
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:27:4: Error: The method 'call' isn't defined for the class 'Never'.
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing method, or defining a method named 'call'.
y(); // Error.
^";
y = (let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y = (let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y++; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: The operator '+' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '+' operator.
y++; // Error.
^") as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
y = (let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y = (let final<BottomType> #t15 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y += 1; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: The operator '+' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '+' operator.
y += 1; // Error.
^") as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
y[42]; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: The operator '[]' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '[]' operator.
y[42]; // Error.
^";
let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
let final<BottomType> #t17 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
y[42] = 42; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: The operator '[]=' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '[]=' operator.
y[42] = 42; // Error.
^";
@@ -2,69 +2,89 @@ library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:24:5: Error: The method 'foo' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:24:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.foo(); // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.bar; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.baz = 42; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:27:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.[42]; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.[42] = 42; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
// y.foo(); // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: The getter 'bar' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
// y.bar; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
// Try accessing using ?. instead.
// y.bar; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: The setter 'baz' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
// y.baz = 42; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
// Try accessing using ?. instead.
// y.baz = 42; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:27:4: Error: The method 'call' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
// y(); // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: The operator '+' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '+' operator.
// y++; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// y++; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: The operator '+' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '+' operator.
// y += 1; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// y += 1; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: The operator '[]' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '[]' operator.
// y[42]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
// y[42]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: The operator '[]=' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '[]=' operator.
// y[42] = 42; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
// y[42] = 42; // Error.
// ^
//
@@ -82,55 +102,60 @@ static method foo(Never x, Never? y) → dynamic {
x.[]=(42, 42);
x = x.+(1);
x = x.+(1);
let final Never? #t1 = y in #t1.{core::Object::==}(null) ?{dynamic} null : #t1{Never}.foo();
let final Never? #t1 = y in #t1.{core::Object::==}(null) ?{core::Null?} null : #t1{Never}.foo();
let final Never? #t2 = y in #t2.{core::Object::==}(null) ?{core::Null?} null : #t2{Never}.bar;
let final Never? #t3 = y in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{Never}.baz = 42;
let final Never? #t4 = y in #t4.{core::Object::==}(null) ?{dynamic} null : #t4{Never}.call();
let final Never? #t4 = y in #t4.{core::Object::==}(null) ?{core::Null?} null : #t4{Never}.call();
let final Never? #t5 = y in #t5.{core::Object::==}(null) ?{core::Null?} null : #t5{Never}.[](42);
let final Never? #t6 = y in #t6.{core::Object::==}(null) ?{core::int?} null : #t6{Never}.[]=(42, 42);
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:24:5: Error: The method 'foo' isn't defined for the class 'Never'.
let final Never #t7 = x in #t7.{core::Object::==}(null) ?{core::Null?} null : #t7.foo();
let final Never #t8 = x in #t8.{core::Object::==}(null) ?{core::Null?} null : #t8.bar;
let final Never #t9 = x in #t9.{core::Object::==}(null) ?{core::int?} null : #t9.baz = 42;
let final Never #t10 = x in #t10.{core::Object::==}(null) ?{core::Null?} null : #t10.[](42);
let final Never #t11 = x in #t11.{core::Object::==}(null) ?{core::int?} null : #t11.[]=(42, 42);
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
y.foo(); // Error.
^^^";
let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
Try accessing using ?. instead.
y.bar; // Error.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: The getter 'bar' isn't defined for the class 'Never'.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
y.bar; // Error.
^^^";
let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
Try accessing using ?. instead.
y.baz = 42; // Error.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: The setter 'baz' isn't defined for the class 'Never'.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
y.baz = 42; // Error.
^^^";
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:27:4: Error: The method 'call' isn't defined for the class 'Never'.
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing method, or defining a method named 'call'.
y(); // Error.
^";
y = (let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y = (let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y++; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: The operator '+' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '+' operator.
y++; // Error.
^") as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
y = (let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y = (let final<BottomType> #t15 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y += 1; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: The operator '+' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '+' operator.
y += 1; // Error.
^") as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
y[42]; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: The operator '[]' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '[]' operator.
y[42]; // Error.
^";
let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
let final<BottomType> #t17 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
y[42] = 42; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: The operator '[]=' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '[]=' operator.
y[42] = 42; // Error.
^";
@@ -2,69 +2,89 @@ library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:24:5: Error: The method 'foo' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:24:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.foo(); // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.bar; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.baz = 42; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:27:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.[42]; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.[42] = 42; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
// y.foo(); // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: The getter 'bar' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
// y.bar; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
// Try accessing using ?. instead.
// y.bar; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: The setter 'baz' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
// y.baz = 42; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
// Try accessing using ?. instead.
// y.baz = 42; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:27:4: Error: The method 'call' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
// y(); // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: The operator '+' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '+' operator.
// y++; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// y++; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: The operator '+' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '+' operator.
// y += 1; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// y += 1; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: The operator '[]' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '[]' operator.
// y[42]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
// y[42]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: The operator '[]=' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '[]=' operator.
// y[42] = 42; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
// y[42] = 42; // Error.
// ^
//
@@ -82,55 +102,60 @@ static method foo(Never x, Never? y) → dynamic {
x.[]=(42, 42);
x = x.+(1);
x = x.+(1);
let final Never? #t1 = y in #t1.{core::Object::==}(null) ?{dynamic} null : #t1{Never}.foo();
let final Never? #t1 = y in #t1.{core::Object::==}(null) ?{core::Null?} null : #t1{Never}.foo();
let final Never? #t2 = y in #t2.{core::Object::==}(null) ?{core::Null?} null : #t2{Never}.bar;
let final Never? #t3 = y in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{Never}.baz = 42;
let final Never? #t4 = y in #t4.{core::Object::==}(null) ?{dynamic} null : #t4{Never}.call();
let final Never? #t4 = y in #t4.{core::Object::==}(null) ?{core::Null?} null : #t4{Never}.call();
let final Never? #t5 = y in #t5.{core::Object::==}(null) ?{core::Null?} null : #t5{Never}.[](42);
let final Never? #t6 = y in #t6.{core::Object::==}(null) ?{core::int?} null : #t6{Never}.[]=(42, 42);
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:24:5: Error: The method 'foo' isn't defined for the class 'Never'.
let final Never #t7 = x in #t7.{core::Object::==}(null) ?{core::Null?} null : #t7.foo();
let final Never #t8 = x in #t8.{core::Object::==}(null) ?{core::Null?} null : #t8.bar;
let final Never #t9 = x in #t9.{core::Object::==}(null) ?{core::int?} null : #t9.baz = 42;
let final Never #t10 = x in #t10.{core::Object::==}(null) ?{core::Null?} null : #t10.[](42);
let final Never #t11 = x in #t11.{core::Object::==}(null) ?{core::int?} null : #t11.[]=(42, 42);
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
y.foo(); // Error.
^^^";
let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
Try accessing using ?. instead.
y.bar; // Error.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: The getter 'bar' isn't defined for the class 'Never'.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
y.bar; // Error.
^^^";
let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
Try accessing using ?. instead.
y.baz = 42; // Error.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: The setter 'baz' isn't defined for the class 'Never'.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
y.baz = 42; // Error.
^^^";
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:27:4: Error: The method 'call' isn't defined for the class 'Never'.
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing method, or defining a method named 'call'.
y(); // Error.
^";
y = (let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y = (let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y++; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: The operator '+' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '+' operator.
y++; // Error.
^") as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
y = (let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y = (let final<BottomType> #t15 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y += 1; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: The operator '+' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '+' operator.
y += 1; // Error.
^") as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
y[42]; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: The operator '[]' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '[]' operator.
y[42]; // Error.
^";
let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
let final<BottomType> #t17 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
y[42] = 42; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: The operator '[]=' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '[]=' operator.
y[42] = 42; // Error.
^";
@@ -2,69 +2,89 @@ library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:24:5: Error: The method 'foo' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:24:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.foo(); // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.bar; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.baz = 42; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:27:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.[42]; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
// x?.[42] = 42; // Warning.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
// y.foo(); // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: The getter 'bar' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
// y.bar; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
// Try accessing using ?. instead.
// y.bar; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: The setter 'baz' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
// y.baz = 42; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
// Try accessing using ?. instead.
// y.baz = 42; // Error.
// ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:27:4: Error: The method 'call' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
// y(); // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: The operator '+' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '+' operator.
// y++; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// y++; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: The operator '+' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '+' operator.
// y += 1; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
// y += 1; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: The operator '[]' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '[]' operator.
// y[42]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
// y[42]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: The operator '[]=' isn't defined for the class 'Never'.
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
// Try correcting the operator to an existing operator, or defining a '[]=' operator.
// y[42] = 42; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
// y[42] = 42; // Error.
// ^
//
@@ -82,55 +102,60 @@ static method foo(Never x, Never? y) → dynamic {
x.[]=(42, 42);
x = x.+(1);
x = x.+(1);
let final Never? #t1 = y in #t1.{core::Object::==}(null) ?{dynamic} null : #t1{Never}.foo();
let final Never? #t1 = y in #t1.{core::Object::==}(null) ?{core::Null?} null : #t1{Never}.foo();
let final Never? #t2 = y in #t2.{core::Object::==}(null) ?{core::Null?} null : #t2{Never}.bar;
let final Never? #t3 = y in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{Never}.baz = 42;
let final Never? #t4 = y in #t4.{core::Object::==}(null) ?{dynamic} null : #t4{Never}.call();
let final Never? #t4 = y in #t4.{core::Object::==}(null) ?{core::Null?} null : #t4{Never}.call();
let final Never? #t5 = y in #t5.{core::Object::==}(null) ?{core::Null?} null : #t5{Never}.[](42);
let final Never? #t6 = y in #t6.{core::Object::==}(null) ?{core::int?} null : #t6{Never}.[]=(42, 42);
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:24:5: Error: The method 'foo' isn't defined for the class 'Never'.
let final Never #t7 = x in #t7.{core::Object::==}(null) ?{core::Null?} null : #t7.foo();
let final Never #t8 = x in #t8.{core::Object::==}(null) ?{core::Null?} null : #t8.bar;
let final Never #t9 = x in #t9.{core::Object::==}(null) ?{core::int?} null : #t9.baz = 42;
let final Never #t10 = x in #t10.{core::Object::==}(null) ?{core::Null?} null : #t10.[](42);
let final Never #t11 = x in #t11.{core::Object::==}(null) ?{core::int?} null : #t11.[]=(42, 42);
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
y.foo(); // Error.
^^^";
let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: Property 'bar' cannot be accessed on 'Never' because it is potentially null.
Try accessing using ?. instead.
y.bar; // Error.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:25:5: Error: The getter 'bar' isn't defined for the class 'Never'.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
y.bar; // Error.
^^^";
let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: Property 'baz' cannot be accessed on 'Never' because it is potentially null.
Try accessing using ?. instead.
y.baz = 42; // Error.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:26:5: Error: The setter 'baz' isn't defined for the class 'Never'.
^^^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
y.baz = 42; // Error.
^^^";
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:27:4: Error: The method 'call' isn't defined for the class 'Never'.
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
Try correcting the name to the name of an existing method, or defining a method named 'call'.
y(); // Error.
^";
y = (let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y = (let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y++; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:28:4: Error: The operator '+' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '+' operator.
y++; // Error.
^") as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
y = (let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y = (let final<BottomType> #t15 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: Operator '+' cannot be called on 'Never' because it is potentially null.
y += 1; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:29:5: Error: The operator '+' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '+' operator.
y += 1; // Error.
^") as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: Operator '[]' cannot be called on 'Never' because it is potentially null.
y[42]; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:4: Error: The operator '[]' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '[]' operator.
y[42]; // Error.
^";
let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
let final<BottomType> #t17 = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: Operator '[]=' cannot be called on 'Never' because it is potentially null.
y[42] = 42; // Error.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:4: Error: The operator '[]=' isn't defined for the class 'Never'.
^" in invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
Try correcting the operator to an existing operator, or defining a '[]=' operator.
y[42] = 42; // Error.
^";
-2
View File
@@ -40,8 +40,6 @@ inference/mixin_inference_outwards_4: TypeCheckError
inference/mixin_inference_unification_1: TypeCheckError
inference/mixin_inference_unification_2: TypeCheckError
nnbd/inheritance_from_opt_in: TypeCheckError
nnbd/issue41210a/issue41210: TypeCheckError
nnbd/issue41210b: TypeCheckError
nnbd/messages_with_types_opt_in: TypeCheckError
nnbd/messages_with_types_opt_out: TypeCheckError
nnbd/never_opt_out: TypeCheckError
-2
View File
@@ -167,8 +167,6 @@ instantiate_to_bound/non_simple_class_parametrized_typedef_cycle: RuntimeError #
instantiate_to_bound/non_simple_generic_function_in_bound_regress: RuntimeError # Expected
nnbd/inheritance_from_opt_in: TypeCheckError
nnbd/issue41180: RuntimeError # Strong mode runtime checking fails due to mixed strong mode.
nnbd/issue41210a/issue41210: TypeCheckError
nnbd/issue41210b: TypeCheckError
nnbd/messages_with_types_opt_in: TypeCheckError
nnbd/messages_with_types_opt_out: TypeCheckError
nnbd/never_opt_out: TypeCheckError
@@ -1331,8 +1331,9 @@ nnbd/issue41102: TextSerializationFailure
nnbd/issue41103: TextSerializationFailure
nnbd/issue41156: TextSerializationFailure
nnbd/issue41180: TextSerializationFailure
nnbd/issue41210a/issue41210: TypeCheckError
nnbd/issue41210b: TypeCheckError
nnbd/issue41210a/issue41210: TextSerializationFailure
nnbd/issue41210b: TextSerializationFailure
nnbd/issue41273: TextSerializationFailure
nnbd/late: TextSerializationFailure
nnbd/later: TextSerializationFailure
nnbd/lhs_of_if_null: TextSerializationFailure
-2
View File
@@ -59,8 +59,6 @@ general_nnbd_opt_out/type_variable_bound_access: TypeCheckError
general_nnbd_opt_out/unsound_promotion: TypeCheckError
general_nnbd_opt_out/void_methods: RuntimeError
nnbd/inheritance_from_opt_in: TypeCheckError
nnbd/issue41210a/issue41210: TypeCheckError
nnbd/issue41210b: TypeCheckError
nnbd/messages_with_types_opt_in: TypeCheckError
nnbd/messages_with_types_opt_out: TypeCheckError
nnbd/never_opt_out: TypeCheckError
+7
View File
@@ -131,6 +131,13 @@ ${ownType} is not a subtype of ${superType}
/// but it additionally accounts for parameter covariance.
String _checkFunctionOverride(
Class host, Member ownMember, Member superMember) {
if (ownMember is Procedure &&
(ownMember.isMemberSignature ||
(ownMember.isForwardingStub && !ownMember.isForwardingSemiStub))) {
// Synthesized members are not obligated to override super members.
return null;
}
final FunctionNode ownFunction = ownMember.function;
final FunctionNode superFunction = superMember.function;
Substitution ownSubstitution = _makeSubstitutionForMember(host, ownMember);