blob: 588637ed0a3a97a00979c5872405c813207075d8 [file] [log] [blame]
// Copyright (c) 2025, 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.
import 'lookup.dart' as prefix;
import 'lookup.dart' deferred as deferred;
typedef Typedef<T> = Class<T>;
Class<T> topLevelMember<T>() {
return new Class<T>();
}
set topLevelSetter(_) {}
var topLevelField;
topLevelTest<S>(parameter) {
var local;
parameter; // Ok
parameter = null; // Ok
local; // Ok
local = null; // Ok
unresolved; // Error
Class; // Ok
ExtensionType; // Ok
Typedef; // Ok
S; // Ok
topLevelMember; // Ok
topLevelField; // Ok
unresolved = null; // Error
topLevelSetter = null; // Ok
topLevelField = null; // Ok
prefix; // Error
prefix.unresolved; // Error
prefix.Class; // Ok
prefix.ExtensionType; // Ok
prefix.Typedef; // Ok
prefix.topLevelMember; // Ok
prefix.topLevelField; // Ok
prefix.unresolved = null; // Error
prefix.topLevelSetter = null; // Ok
prefix.topLevelField = null; // Ok
prefix.loadLibrary(); // Error
deferred.loadLibrary(); // Ok
}
class SuperClass {
void superMember() {}
set superSetter(_) {}
var superField;
}
class Class<T> extends SuperClass {
void instanceMember() {}
set instanceSetter(_) {}
var instanceField;
static void staticMember() {}
static set staticSetter(_) {}
static var staticField;
Class([parameter]) {
var local;
parameter; // Ok
parameter = null; // Ok
local; // Ok
local = null; // Ok
unresolved; // Error
Class; // Ok
ExtensionType; // Ok
Typedef; // Ok
T; // Ok
instanceMember; // Ok
instanceField; // Ok
superMember; // Ok
superField; // Ok
staticMember; // Ok
staticField; // Ok
topLevelMember; // Ok
topLevelField; // Ok
unresolved = null; // Error
topLevelSetter = null; // Ok
topLevelField = null; // Ok
superSetter = null; // Ok
superField = null; // Ok
instanceSetter = null; // Ok
instanceField = null; // Ok
staticSetter = null; // Ok
staticField = null; // Ok
prefix; // Error
prefix.unresolved; // Error
prefix.Class; // Ok
prefix.ExtensionType; // Ok
prefix.Typedef; // Ok
prefix.topLevelMember; // Ok
prefix.topLevelField; // Ok
prefix.unresolved = null; // Error
prefix.topLevelSetter = null; // Ok
prefix.topLevelField = null; // Ok
}
factory Class.factory([parameter]) {
var local;
parameter; // Ok
parameter = null; // Ok
local; // Ok
local = null; // Ok
unresolved; // Error
Class; // Ok
ExtensionType; // Ok
Typedef; // Ok
T; // Ok
instanceMember; // Error
instanceField; // Error
superMember; // Error
superField; // Error
staticMember; // Ok
staticField; // Ok
topLevelMember; // Ok
topLevelField; // Ok
unresolved = null; // Error
topLevelSetter = null; // Ok
topLevelField = null; // Ok
superSetter = null; // Error
superField = null; // Error
instanceSetter = null; // Error
instanceField = null; // Error
staticSetter = null; // Ok
staticField = null; // Ok
prefix; // Error
prefix.unresolved; // Error
prefix.Class; // Ok
prefix.ExtensionType; // Ok
prefix.Typedef; // Ok
prefix.topLevelMember; // Ok
prefix.topLevelField; // Ok
prefix.unresolved = null; // Error
prefix.topLevelSetter = null; // Ok
prefix.topLevelField = null; // Ok
return new Class();
}
instanceTest<S>(parameter) {
var local;
parameter; // Ok
parameter = null; // Ok
local; // Ok
local = null; // Ok
unresolved; // Error
Class; // Ok
ExtensionType; // Ok
Typedef; // Ok
T; // Ok
S; // Ok
instanceMember; // Ok
instanceField; // Ok
superMember; // Ok
superField; // Ok
staticMember; // Ok
staticField; // Ok
topLevelMember; // Ok
topLevelField; // Ok
unresolved = null; // Error
topLevelSetter = null; // Ok
topLevelField = null; // Ok
superSetter = null; // Ok
superField = null; // Ok
instanceSetter = null; // Ok
instanceField = null; // Ok
staticSetter = null; // Ok
staticField = null; // Ok
prefix; // Error
prefix.unresolved; // Error
prefix.Class; // Ok
prefix.ExtensionType; // Ok
prefix.Typedef; // Ok
prefix.topLevelMember; // Ok
prefix.topLevelField; // Ok
prefix.unresolved = null; // Error
prefix.topLevelSetter = null; // Ok
prefix.topLevelField = null; // Ok
}
static staticTest<S>(parameter) {
var local;
parameter; // Ok
parameter = null; // Ok
local; // Ok
local = null; // Ok
unresolved; // Error
Class; // Ok
ExtensionType; // Ok
Typedef; // Ok
T; // Error
S; // Ok
instanceMember; // Error
instanceField; // Error
superMember; // Error
superField; // Error
staticMember; // Ok
staticField; // Ok
topLevelMember; // Ok
topLevelField; // Ok
unresolved = null; // Error
topLevelSetter = null; // Ok
topLevelField = null; // Ok
superSetter = null; // Error
superField = null; // Error
instanceSetter = null; // Error
instanceField = null; // Error
staticSetter = null; // Ok
staticField = null; // Ok
prefix; // Error
prefix.unresolved; // Error
prefix.Class; // Ok
prefix.ExtensionType; // Ok
prefix.Typedef; // Ok
prefix.topLevelMember; // Ok
prefix.topLevelField; // Ok
prefix.unresolved = null; // Error
prefix.topLevelSetter = null; // Ok
prefix.topLevelField = null; // Ok
}
}
extension Extension<T> on Class<T> {
void extensionInstanceMember() {}
set extensionInstanceSetter(_) {}
static void extensionStaticMember() {}
static set extensionStaticSetter(_) {}
instanceTest<S>(parameter) {
var local;
parameter; // Ok
parameter = null; // Ok
local; // Ok
local = null; // Ok
unresolved; // Error
Class; // Ok
ExtensionType; // Ok
Typedef; // Ok
T; // Ok
S; // Ok
instanceMember; // Ok
instanceField; // Ok
superMember; // Ok
superField; // Ok
extensionInstanceMember; // Ok
extensionStaticMember; // Ok
topLevelMember; // Ok
topLevelField; // Ok
unresolved = null; // Error
topLevelSetter = null; // Ok
topLevelField = null; // Ok
instanceSetter = null; // Ok
instanceField = null; // Ok
superSetter = null; // Ok
superField = null; // Ok
extensionInstanceSetter = null; // Ok
extensionStaticSetter = null; // Ok
prefix; // Error
prefix.unresolved; // Error
prefix.Class; // Ok
prefix.ExtensionType; // Ok
prefix.Typedef; // Ok
prefix.topLevelMember; // Ok
prefix.topLevelField; // Ok
prefix.unresolved = null; // Error
prefix.topLevelSetter = null; // Ok
prefix.topLevelField = null; // Ok
}
static staticTest<S>(parameter) {
var local;
parameter; // Ok
parameter = null; // Ok
local; // Ok
local = null; // Ok
unresolved; // Error
Class; // Ok
ExtensionType; // Ok
Typedef; // Ok
T; // Error
S; // Ok
instanceMember; // Error
instanceField; // Error
superMember; // Error
superField; // Error
extensionInstanceMember; // Error
extensionStaticMember; // Ok
topLevelMember; // Ok
topLevelField; // Ok
unresolved = null; // Error
topLevelSetter = null; // Ok
topLevelField = null; // Ok
instanceSetter = null; // Error
instanceField = null; // Error
superSetter = null; // Error
superField = null; // Error
extensionInstanceSetter = null; // Error
extensionStaticSetter = null; // Ok
prefix; // Error
prefix.unresolved; // Error
prefix.Class; // Ok
prefix.ExtensionType; // Ok
prefix.Typedef; // Ok
prefix.topLevelMember; // Ok
prefix.topLevelField; // Ok
prefix.unresolved = null; // Error
prefix.topLevelSetter = null; // Ok
prefix.topLevelField = null; // Ok
}
}
extension type ExtensionType<T>._(Class<T> c) implements Class<T> {
void extensionTypeInstanceMember() {}
set extensionTypeInstanceSetter(_) {}
static void extensionTypeStaticMember() {}
static set extensionTypeStaticSetter(_) {}
ExtensionType([parameter]) : c = topLevelMember() {
var local;
parameter; // Ok
parameter = null; // Ok
local; // Ok
local = null; // Ok
unresolved; // Error
Class; // Ok
ExtensionType; // Ok
Typedef; // Ok
T; // Ok
instanceMember; // Ok
instanceField; // Ok
superMember; // Ok
superField; // Ok
extensionTypeInstanceMember; // Ok
extensionTypeStaticMember; // Ok
topLevelMember; // Ok
topLevelField; // Ok
unresolved = null; // Error
topLevelSetter = null; // Ok
topLevelField = null; // Ok
instanceSetter = null; // Ok
instanceField = null; // Ok
superSetter = null; // Ok
superField = null; // Ok
extensionTypeInstanceSetter = null; // Ok
extensionTypeStaticSetter = null; // Ok
prefix; // Error
prefix.unresolved; // Error
prefix.Class; // Ok
prefix.ExtensionType; // Ok
prefix.Typedef; // Ok
prefix.topLevelMember; // Ok
prefix.topLevelField; // Ok
prefix.unresolved = null; // Error
prefix.topLevelSetter = null; // Ok
prefix.topLevelField = null; // Ok
}
ExtensionType.redirect() : this._(topLevelMember()); // Ok
factory ExtensionType.factory(parameter) {
var local;
parameter; // Ok
parameter = null; // Ok
local; // Ok
local = null; // Ok
unresolved; // Error
Class; // Ok
ExtensionType; // Ok
Typedef; // Ok
T; // Ok
instanceMember; // Error
instanceField; // Error
superMember; // Error
superField; // Error
extensionTypeInstanceMember; // Error
extensionTypeStaticMember; // Ok
topLevelMember; // Ok
topLevelField; // Ok
unresolved = null; // Error
topLevelSetter = null; // Ok
topLevelField = null; // Ok
instanceSetter = null; // Error
instanceField = null; // Error
superSetter = null; // Error
superField = null; // Error
extensionTypeInstanceSetter = null; // Error
extensionTypeStaticSetter = null; // Ok
prefix; // Error
prefix.unresolved; // Error
prefix.Class; // Ok
prefix.ExtensionType; // Ok
prefix.Typedef; // Ok
prefix.topLevelMember; // Ok
prefix.topLevelField; // Ok
prefix.unresolved = null; // Error
prefix.topLevelSetter = null; // Ok
prefix.topLevelField = null; // Ok
return new ExtensionType();
}
instanceTest<S>(parameter) {
var local;
parameter; // Ok
parameter = null; // Ok
local; // Ok
local = null; // Ok
unresolved; // Error
Class; // Ok
ExtensionType; // Ok
Typedef; // Ok
T; // Ok
S; // Ok
instanceMember; // Ok
instanceField; // Ok
superMember; // Ok
superField; // Ok
extensionTypeInstanceMember; // Ok
extensionTypeStaticMember; // Ok
topLevelMember; // Ok
topLevelField; // Ok
unresolved = null; // Error
topLevelSetter = null; // Ok
topLevelField = null; // Ok
instanceSetter = null; // Ok
instanceField = null; // Ok
superSetter = null; // Ok
superField = null; // Ok
extensionTypeInstanceSetter = null; // Ok
extensionTypeStaticSetter = null; // Ok
prefix; // Error
prefix.unresolved; // Error
prefix.Class; // Ok
prefix.ExtensionType; // Ok
prefix.Typedef; // Ok
prefix.topLevelMember; // Ok
prefix.topLevelField; // Ok
prefix.unresolved = null; // Error
prefix.topLevelSetter = null; // Ok
prefix.topLevelField = null; // Ok
}
static staticTest<S>(parameter) {
var local;
parameter; // Ok
parameter = null; // Ok
local; // Ok
local = null; // Ok
unresolved; // Error
Class; // Ok
ExtensionType; // Ok
Typedef; // Ok
T; // Error
S; // Ok
instanceMember; // Error
instanceField; // Error
superMember; // Error
superField; // Error
extensionTypeInstanceMember; // Error
extensionTypeStaticMember; // Ok
topLevelMember; // Ok
topLevelField; // Ok
unresolved = null; // Error
topLevelSetter = null; // Ok
topLevelField = null; // Ok
instanceSetter = null; // Error
instanceField = null; // Error
superSetter = null; // Error
superField = null; // Error
extensionTypeInstanceSetter = null; // Error
extensionTypeStaticSetter = null; // Ok
prefix; // Error
prefix.unresolved; // Error
prefix.Class; // Ok
prefix.ExtensionType; // Ok
prefix.Typedef; // Ok
prefix.topLevelMember; // Ok
prefix.topLevelField; // Ok
prefix.unresolved = null; // Error
prefix.topLevelSetter = null; // Ok
prefix.topLevelField = null; // Ok
}
}