|
@@ -115,6 +115,11 @@ String function conformance_scd(model : Element):
|
|
|
Element spi_cache
|
|
|
Element constraint_function
|
|
|
|
|
|
+ Element reverse_m
|
|
|
+ Element reverse_mm
|
|
|
+ reverse_m = make_reverse_dictionary(model["model"])
|
|
|
+ reverse_mm = make_reverse_dictionary(model["metamodel"]["model"])
|
|
|
+
|
|
|
spo_cache = create_node()
|
|
|
spi_cache = create_node()
|
|
|
|
|
@@ -144,10 +149,10 @@ String function conformance_scd(model : Element):
|
|
|
return "Type of element not in specified metamodel: " + model_info(model, model_name)!
|
|
|
|
|
|
if (is_edge(element)):
|
|
|
- src_model = reverseKeyLookup(model["model"], read_edge_src(element))
|
|
|
- dst_model = reverseKeyLookup(model["model"], read_edge_dst(element))
|
|
|
- src_metamodel = reverseKeyLookup(metamodel["model"], read_edge_src(metamodel["model"][typing[model_name]]))
|
|
|
- dst_metamodel = reverseKeyLookup(metamodel["model"], read_edge_dst(metamodel["model"][typing[model_name]]))
|
|
|
+ src_model = reverse_m[cast_id2s(read_edge_src(element))]
|
|
|
+ dst_model = reverse_m[cast_id2s(read_edge_dst(element))]
|
|
|
+ src_metamodel = reverse_mm[cast_id2s(read_edge_src(metamodel["model"][typing[model_name]]))]
|
|
|
+ dst_metamodel = reverse_mm[cast_id2s(read_edge_dst(metamodel["model"][typing[model_name]]))]
|
|
|
|
|
|
if (bool_not(is_nominal_instance(model, src_model, src_metamodel))):
|
|
|
log("got: " + src_model)
|