Result {diags = [], maybeResult = Just (metamodel MetamodelWModel {
datatype String
abstract class Classifier{
property name[0,*] : String
}
class ClassextendsClassifier {
property attr[0,*] : Attribute
property asoc[0,*] : Association oppositeOf class
}
class AssociationextendsClassifier {
property class[0,*] : Class oppositeOf asoc
}
class Attribute{
property kind[0,*] : String
}
}
model ClassModel conformsTo MetamodelWModel {
object A : Class
object B : Class
object integer : String
object attr1 : Attribute
object attr2 : Attribute
object asoc : Association
object attr1Kind : String
object attr2Kind : String
object aName : String
object bName : String
link attr(A,attr1)
link attr(B,attr2)
link name(A,aName)
link name(B,bName)
link kind(attr1,attr1Kind)
link kind(attr2,attr2Kind)
link asoc(A,asoc)
link asoc(B,asoc)
},ExtSign {plainSign = Sign {types = fromList [TypeClass {name = "Association", kind = ClassKind},TypeClass {name = "Attribute", kind = ClassKind},TypeClass {name = "Class", kind = ClassKind},TypeClass {name = "Classifier", kind = ClassKind},TypeClass {name = "String", kind = DataTypeKind}], typeRel = fromList [(TypeClass {name = "Association", kind = ClassKind},fromList [TypeClass {name = "Classifier", kind = ClassKind}]),(TypeClass {name = "Class", kind = ClassKind},fromList [TypeClass {name = "Classifier", kind = ClassKind}])], abstractClasses = fromList [TypeClass {name = "Classifier", kind = ClassKind}], roles = fromList ["_","asoc","attr","class","kind","name"], properties = fromList [PropertyT {sourceRole = "_", sourceType = TypeClass {name = "Attribute", kind = ClassKind}, targetRole = "kind", targetType = TypeClass {name = "String", kind = DataTypeKind}},PropertyT {sourceRole = "_", sourceType = TypeClass {name = "Class", kind = ClassKind}, targetRole = "attr", targetType = TypeClass {name = "Attribute", kind = ClassKind}},PropertyT {sourceRole = "_", sourceType = TypeClass {name = "Classifier", kind = ClassKind}, targetRole = "name", targetType = TypeClass {name = "String", kind = DataTypeKind}},PropertyT {sourceRole = "asoc", sourceType = TypeClass {name = "Association", kind = ClassKind}, targetRole = "class", targetType = TypeClass {name = "Class", kind = ClassKind}},PropertyT {sourceRole = "class", sourceType = TypeClass {name = "Class", kind = ClassKind}, targetRole = "asoc", targetType = TypeClass {name = "Association", kind = ClassKind}}], instances = fromList [("A",TypeClass {name = "Class", kind = ClassKind}),("B",TypeClass {name = "Class", kind = ClassKind}),("aName",TypeClass {name = "String", kind = DataTypeKind}),("asoc",TypeClass {name = "Association", kind = ClassKind}),("attr1",TypeClass {name = "Attribute", kind = ClassKind}),("attr1Kind",TypeClass {name = "String", kind = DataTypeKind}),("attr2",TypeClass {name = "Attribute", kind = ClassKind}),("attr2Kind",TypeClass {name = "String", kind = DataTypeKind}),("bName",TypeClass {name = "String", kind = DataTypeKind}),("integer",TypeClass {name = "String", kind = DataTypeKind})], links = fromList [LinkT {sourceVar = "A", targetVar = "aName", property = PropertyT {sourceRole = "_", sourceType = TypeClass {name = "Classifier", kind = ClassKind}, targetRole = "name", targetType = TypeClass {name = "String", kind = DataTypeKind}}},LinkT {sourceVar = "A", targetVar = "asoc", property = PropertyT {sourceRole = "class", sourceType = TypeClass {name = "Class", kind = ClassKind}, targetRole = "asoc", targetType = TypeClass {name = "Association", kind = ClassKind}}},LinkT {sourceVar = "A", targetVar = "attr1", property = PropertyT {sourceRole = "_", sourceType = TypeClass {name = "Class", kind = ClassKind}, targetRole = "attr", targetType = TypeClass {name = "Attribute", kind = ClassKind}}},LinkT {sourceVar = "B", targetVar = "asoc", property = PropertyT {sourceRole = "class", sourceType = TypeClass {name = "Class", kind = ClassKind}, targetRole = "asoc", targetType = TypeClass {name = "Association", kind = ClassKind}}},LinkT {sourceVar = "B", targetVar = "attr2", property = PropertyT {sourceRole = "_", sourceType = TypeClass {name = "Class", kind = ClassKind}, targetRole = "attr", targetType = TypeClass {name = "Attribute", kind = ClassKind}}},LinkT {sourceVar = "B", targetVar = "bName", property = PropertyT {sourceRole = "_", sourceType = TypeClass {name = "Classifier", kind = ClassKind}, targetRole = "name", targetType = TypeClass {name = "String", kind = DataTypeKind}}},LinkT {sourceVar = "attr1", targetVar = "attr1Kind", property = PropertyT {sourceRole = "_", sourceType = TypeClass {name = "Attribute", kind = ClassKind}, targetRole = "kind", targetType = TypeClass {name = "String", kind = DataTypeKind}}},LinkT {sourceVar = "attr2", targetVar = "attr2Kind", property = PropertyT {sourceRole = "_", sourceType = TypeClass {name = "Attribute", kind = ClassKind}, targetRole = "kind", targetType = TypeClass {name = "String", kind = DataTypeKind}}}]}, nonImportedSymbols = fromList []},[])}