blob: bc9d1b37b6f30e760bb899014089ee7daa664d88 (
plain) (
tree)
|
|
source _source : 'SourceMM1.ecore#/'
target _target : 'TargetMM1.ecore#/'
mappings {
map _target::TRoot from SRoot {
ownedA := ownedX.resolve;
}
map _target::A1 from X when isA1 {
name := name;
ownsB := ownsY.oclAsType(Y1).resolve;
}
map _target::A2 from X when isA2 {
name := name;
ownsC := ownsY.oclAsType(Y2).resolve;
}
map _target::A3 from X when isA3 {
name := name;
ownsC := ownsY.oclAsType(Y2).resolve;
}
map _target::B from Y1 {
name := name;
ownsD := ownsZ.resolve;
}
map _target::C from Y2 {
name := name;
ownsD := ownsZ.resolve;
}
map _target::D from Z when parentIsY1 {
toA := toY.oclAsType(_'source'::Y1).resolve.toA1;
refsB := if refers = null then null else resolve.lookup(B,refers) endif;
}
map _target::D from Z when parentIsY2{
toA := toY.oclAsType(_'source'::Y2).resolve.toA2;
refsC := if refers = null then null else resolve.lookup(C,refers) endif;
}
}
disambiguation {
X {
isA1 := isA1;
isA2 := isA2;
isA3 := not(isA1 or isA2);
}
Z {
parentIsY1 := oclContainer().oclIsTypeOf(Y1);
parentIsY2 := oclContainer().oclIsTypeOf(Y2);
}
}
nameresolution {
named-element NamedElement name-property name; /*from target */
name-referencer PathElementCS name-property name; /*from source */
name-qualifier PathNameCS name-segments-property path; /*from source */
TRoot {
scopes A1, A2 using ownedA;
}
A1 {
named-element /*name-property name*/
qualifies B using ownsB;
for ownsB
scopes B using following ownsB;
}
A2 {
named-element
qualifies C using ownsC;
for ownsC
scopes C using following ownsC;
}
B {
named-element;
}
C {
named-element;
}
--D{} -- FIXME, just to generate the env method
}
|