blob: 03b14c474a5e41352e62c0fd7e284971f42a463b [file] [log] [blame]
modeltype Ecore uses 'http://www.eclipse.org/emf/2002/Ecore';
transformation intermWithExtends(out Ecore);
intermediate class MyBase {
}
intermediate class MyClass extends MyBase, ecore::EClassifier {
a : Integer = 5;
b : String = 'a';
}
intermediate class MyClass2 extends MyClass, ecore::EClass {
ab : Sequence(String) = Sequence{'1', '2'}
}
main() {
var v0 := object MyBase{};
assert fatal (v0.oclIsTypeOf(MyBase));
var v1 := object MyClass{};
assert fatal (v1.a = 5);
assert fatal (v1.oclIsTypeOf(MyClass));
var v2 := v1.map toMyClass2();
assert fatal (v2.b = 'a');
assert fatal (v2.ab->size() = 2);
assert fatal (v2.oclIsTypeOf(MyClass2));
var v3 := v2.map toEClass();
assert fatal (v3.name = 'MyClass2');
}
mapping EClassifier::toMyClass2() : MyClass2 {
}
mapping MyClass2::toEClass() : EClass {
name := self.metaClassName();
}