[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:
committed by
commit-bot@chromium.org
parent
a90b845444
commit
0d16ff6d86
@@ -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
|
||||
|
||||
+63
@@ -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.
|
||||
^";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user