
class Abstract {
	Int fun() : abstract;
}

class NoAbstract extends Abstract {
	Int fun() {
		10;
	}
}

Int createAbstract() {
	Abstract x;
	x.fun();
}

Int createNoAbstract() {
	NoAbstract x;
	x.fun();
}



class CppNoAbstract extends debug:DbgAbstract {
	Int member() {
		10;
	}
}

Int createCppAbstract() {
	debug:DbgAbstract x;
	x.member();
}

Int createCppNoAbstract() {
	CppNoAbstract x;
	x.member() + x.real();
}

class CppCallSuper extends debug:DbgAbstract {
	Int member() {
		super:member();
		10;
	}
}

Int cppCallSuper() {
	CppCallSuper s;
	s.member();
}

class CppAbstractDtor extends debug:DbgAbstractDtor {
	Int member() {
		super:member();
		10;
	}
}

Int cppAbstractDtor() {
	CppAbstractDtor x;
	10;
}
Int cppAbstractSuper() {
	CppAbstractDtor x;
	x.member();
}
