blob: d6bcf4403b8515efd89d0e1a478235a4044ff223 [file] [log] [blame]
// Copyright (c) 2023, 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.
// Test for positive and negative uses of named declarations. This file is
// also used in tests/compiler/dart2js/model/native_test.dart.
import 'dart:_js_helper';
var topLevelField;
get topLevelGetter => null;
set topLevelSetter(_) {}
topLevelFunction() {}
// NON_NATIVE_EXTERNAL
external get externalTopLevelGetter;
// NON_NATIVE_EXTERNAL
external set externalTopLevelSetter(_);
// NON_NATIVE_EXTERNAL
external externalTopLevelFunction();
get nativeTopLevelGetter native;
set nativeTopLevelSetter(_) native;
nativeTopLevelFunction() native;
class Class {
Class.generative();
factory Class.fact() => null as dynamic;
// NON_NATIVE_EXTERNAL
external Class.externalGenerative();
// NON_NATIVE_EXTERNAL
external factory Class.externalFact();
// NATIVE_NON_INSTANCE_IN_NON_NATIVE_CLASS
Class.nativeGenerative() native;
// NATIVE_NON_INSTANCE_IN_NON_NATIVE_CLASS
factory Class.nativeFact() native;
var instanceField;
get instanceGetter => null;
set instanceSetter(_) {}
instanceMethod() {}
static var staticField;
static get staticGetter => null;
static set staticSetter(_) {}
static staticMethod() {}
// NON_NATIVE_EXTERNAL
external get externalInstanceGetter;
// NON_NATIVE_EXTERNAL
external set externalInstanceSetter(_);
// NON_NATIVE_EXTERNAL
external externalInstanceMethod();
// NON_NATIVE_EXTERNAL
external static get externalStaticGetter;
// NON_NATIVE_EXTERNAL
external static set externalStaticSetter(_);
// NON_NATIVE_EXTERNAL
external static externalStaticMethod();
get nativeInstanceGetter native;
set nativeInstanceSetter(_) native;
nativeInstanceMethod() native;
// NATIVE_NON_INSTANCE_IN_NON_NATIVE_CLASS
static get nativeStaticGetter native;
// NATIVE_NON_INSTANCE_IN_NON_NATIVE_CLASS
static set nativeStaticSetter(_) native;
// NATIVE_NON_INSTANCE_IN_NON_NATIVE_CLASS
static nativeStaticMethod() native;
}
@Native('d')
class NativeClass {
NativeClass.generative();
factory NativeClass.fact() => null as dynamic;
// NON_NATIVE_EXTERNAL
external NativeClass.externalGenerative();
// NON_NATIVE_EXTERNAL
external factory NativeClass.externalFact();
NativeClass.nativeGenerative() native;
factory NativeClass.nativeFact() native;
var instanceField;
get instanceGetter => null;
set instanceSetter(_) {}
instanceMethod() {}
static var staticField;
static get staticGetter => null;
static set staticSetter(_) {}
static staticMethod() {}
var instanceNamedField;
// NON_NATIVE_EXTERNAL
external get externalInstanceGetter;
// NON_NATIVE_EXTERNAL
external set externalInstanceSetter(_);
// NON_NATIVE_EXTERNAL
external externalInstanceMethod();
// NON_NATIVE_EXTERNAL
external static get externalStaticGetter;
// NON_NATIVE_EXTERNAL
external static set externalStaticSetter(_);
// NON_NATIVE_EXTERNAL
external static externalStaticMethod();
get nativeInstanceGetter native;
set nativeInstanceSetter(_) native;
nativeInstanceMethod() native;
static get nativeStaticGetter native;
static set nativeStaticSetter(_) native;
static nativeStaticMethod() native;
}
main() {
if (true) return;
topLevelField;
topLevelGetter;
topLevelSetter = null;
topLevelFunction();
externalTopLevelGetter;
externalTopLevelSetter = null;
externalTopLevelFunction();
nativeTopLevelGetter;
nativeTopLevelSetter = null;
nativeTopLevelFunction();
var c1 = new Class.generative();
new Class.fact();
new Class.externalGenerative();
new Class.externalFact();
new Class.nativeGenerative();
new Class.nativeFact();
c1.instanceField;
c1.instanceGetter;
c1.instanceSetter = null;
c1.instanceMethod();
Class.staticField;
Class.staticGetter;
Class.staticSetter = null;
Class.staticMethod();
c1.externalInstanceGetter;
c1.externalInstanceSetter = null;
c1.externalInstanceMethod();
Class.externalStaticGetter;
Class.externalStaticSetter = null;
Class.externalStaticMethod();
c1.nativeInstanceGetter;
c1.nativeInstanceSetter = null;
c1.nativeInstanceMethod();
Class.nativeStaticGetter;
Class.nativeStaticSetter = null;
Class.nativeStaticMethod();
var c2 = new NativeClass.generative();
new NativeClass.fact();
new NativeClass.externalGenerative();
new NativeClass.externalFact();
new NativeClass.nativeGenerative();
new NativeClass.nativeFact();
c2.instanceField;
c2.instanceGetter;
c2.instanceSetter = null;
c2.instanceMethod();
NativeClass.staticField;
NativeClass.staticGetter;
NativeClass.staticSetter = null;
NativeClass.staticMethod();
c2.externalInstanceGetter;
c2.externalInstanceSetter = null;
c2.externalInstanceMethod();
NativeClass.externalStaticGetter;
NativeClass.externalStaticSetter = null;
NativeClass.externalStaticMethod();
c2.nativeInstanceGetter;
c2.nativeInstanceSetter = null;
c2.nativeInstanceMethod();
NativeClass.nativeStaticGetter;
NativeClass.nativeStaticSetter = null;
NativeClass.nativeStaticMethod();
}