123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 |
- package unit;
- using MyClass.UsingBase;
- using MyClass.UsingChild1;
- using MyClass.UsingChild2;
- class MyClass {
- #if as3 public #end var val : Int;
- public var ref : MyClass;
- public var intValue : Int;
- public var stringValue : String;
- public function new(v) {
- val = v;
- intValue = 55;
- }
- public function get() {
- return val;
- }
- @:keep public function set(v) {
- val = v;
- }
- public function add(x,y) {
- return val + x + y;
- }
- }
- class MyParent {
- public function new() { }
- function a() return 11;
- function b() return 20;
- }
- class MyDynamicChildWithToString extends MyParent implements Dynamic
- {
- public function toString()
- {
- return "Custom toString";
- }
- }
- class MyDynamicChildWithoutToString extends MyParent implements Dynamic
- {
- }
- class MyChild1 extends MyParent {
- public override function a() { return 12; }
- override function b() return 21;
- function c() return 19;
- }
- #if !as3
- class MyChild2 extends MyParent {
- public function test1(mc1:MyChild1) return mc1.b();
- }
- #end
- interface I1 { }
- class Base { public var s:String; public function new() { } }
- class Child1 extends Base { public function new() { super(); } }
- class Child2 extends Base implements I1 { public function new() { super(); } }
- class Child2_1 extends Child2 { public function new() { super(); } }
- class Unrelated implements I1 { public var s:String; public var t:Int; public function new() { } }
- interface I2 extends I1 { }
- class ClassI2 implements I2 { public function new() { } }
- class CI1 extends Base implements I1 { public function new() { super(); } }
- class CI2 extends Base implements I1 { public function new() { super(); } }
- class CII1 extends CI1 { public function new() { super(); } }
- class CII2 extends CI2 { public function new() { super(); } }
- class PClassBase<T> { public function new() { } }
- class PClass1<T> extends PClassBase<Float> { public function new() { super(); } }
- class PClass2<T> extends PClassBase<T> { public function new(t:T) { super(); } }
- interface CovI {
- public function covariant():Base;
- }
- interface CovI2 extends CovI {
- public function covariant():Child2;
- }
- class Cov1 {
- public function new() { }
- public function covariant():Base { return new Base(); }
- }
- class Cov2 extends Cov1 implements CovI {
- public function new() { super(); }
- public override function covariant():Child1 { return new Child1(); }
- }
- class Cov3 implements CovI2
- {
- public function new() { }
- public function covariant():Child2_1 { return new Child2_1(); }
- }
- class Ctrv1 {
- public function new() { }
- public function contravariant(arg:Child1) { }
- }
- class Ctrv2 extends Ctrv1 {
- public function new() { super(); }
- public override function contravariant(arg:Base) { }
- }
- class InitBase {
- public var i = 2;
- public var s = "foo";
- public var b = true;
- public var t = String;
- static public inline var si = 2;
- static public inline var sop = 2 + 5 * 5;
- static public inline var st = String;
- static public inline var sp = (2 * 3);
- static public inline var sinline = DateTools.minutes(1);
- public function new() { }
- }
- class InitChild extends InitBase { }
- class InitChildWithCtor extends InitBase {
- public function new(_) {
- super();
- }
- }
- class InitWithoutCtor {
- public var i = 2;
- }
- class InitProperties {
- public var accNull(default, null):Int = 3;
- public var accDefault(default, default):Int = 3;
- public var accFunc(default, set_accFunc):Int = 3;
- public var accNever(default, never):Int = 3;
- public var accDynamic(default, dynamic):Int = 3;
- function set_accFunc(v) return throw "setter was called";
- function set_accDynamic(v) return throw "setter was called";
- public function new() { }
- }
- class ParamConstraintsClass {
- public function new() { }
- static public function staticSingle< A:Base > (a:A):A { return a; }
- public function memberSingle< A:Base > (a:A):A { return a; }
- public function memberMultiple < A:(Base, I1) > (a:A):A { return a; }
- public function memberComplex < A:I1, B:List<A> > (a:A, b:B) { return b; }
- public function memberBasic < A:String, B:Array<A> > (a:A, b:B) { return b[0]; }
- public function memberAnon < A:( { x : Int }, { y : Float } ) > (v:A) { return v.x + v.y; }
- #if !(java || cs) //this is a known bug caused by issue #915
- @:overload(function< A, B:Array<A> > (a:A, b:B):Void { } )
- public function memberOverload < A, B > (a:String, b:String) { }
- #end
- }
- class ParamConstraintsClass2<T> {
- public function new() { }
- public function bind(t:T) { }
- public function check<A:Array<T>>(a:A) { }
- }
- class UsingBase {
- static function privFunc(s:String) return s.toUpperCase();
- static public function pupFunc(s:String) return s.toUpperCase();
- }
- class UsingChild1 extends UsingBase {
- static public function test() {
- return "foo".pupFunc() + "foo".privFunc() + "FOO".siblingFunc();
- }
- static function siblingFunc(s:String) return s.toLowerCase();
- }
- class UsingChild2 extends UsingBase {
- static public function test() {
- #if !macro
- TestType.typeError("foo".siblingFunc());
- #end
- return "foo".siblingFunc();
- }
- static public function siblingFunc(s:String) return s.toUpperCase();
- }
- class UsingUnrelated {
- static public function test() {
- #if !macro
- TestType.typeError("foo".privFunc());
- TestType.typeError("foo".siblingFunc());
- #end
- return "foo".pupFunc() + "foo".siblingFunc();
- }
- }
- @:keep class VarProps {
- static var SX(get, set) : Int;
- @:isVar static var SY(get, set) : Int;
- static function get_SX() {
- return 1;
- }
- static function set_SX(v) {
- return v;
- }
- static function get_SY() {
- return SY;
- }
- static function set_SY(v) {
- SY = v;
- return v;
- }
- public var x(get, set) : Int;
- @:isVar public var y(get, set) : Int;
- public var z(default, set) : Int;
- public function new() {
- x = 1;
- y = 2;
- z = 3;
- }
- function get_x() {
- return 1;
- }
- function set_x(v) {
- return v;
- }
- function get_y() {
- return y;
- }
- function set_y(v) {
- y = v;
- return v;
- }
- function set_z(v) {
- z = v + 1;
- return z;
- }
- }
- class BaseSuperProp {
- public var prop(get, set):Int;
- public var fProp(get, null):Int->String;
- public function new() {
- }
- function get_prop() return 1;
- function set_prop(v) return v;
- function get_fProp() return function(i:Int) return "test" +i;
- }
- class ChildSuperProp extends BaseSuperProp {
- public override function get_prop() return super.prop + 1;
- public override function set_prop(v) return (super.prop = v) + 1;
- public override function get_fProp() {
- var s = super.fProp(0);
- return function(i:Int) return s + i;
- }
- public function test() {
- return super.fProp(2);
- }
- }
- class InlineCastA {
- function self() : InlineCastA {
- return this;
- }
- }
- class InlineCastB extends InlineCastA {
- public function new() { }
- public inline function test() : InlineCastB {
- #if as3
- return cast (self(), InlineCastB);
- #else
- return cast self();
- #end
- }
- public function quote() {
- return "I am the greatest.";
- }
- }
|