connector-binary-specialization
Available in: KerML, SysML
This checks that nary connectors do not specialize Links::BinaryLink.
Specification
If a
Connectorhas more than twoconnector_ends, then it must not specialize, directly or indirectly, theAssociationBinaryLinkfrom the Kernel Semantic Library.
Example
This can be triggered by a nary connector specializing a binary connector as
Links::BinaryLink specialization is inserted automatically:
connection a { end a; end b; }
connection c :> a {
end a;
end b;
end c; // error
}
Or by specializing Links::BinaryLink explicitly:
connection d : Links::BinaryLink {
end a;
end b;
end c; // error
}
Fix this by removing extraneous end features:
connection a { end a; end b; }
connection c :> a { end a; end b; } // ok
connection d : Links::BinaryLink { end a; end b; } // ok
Or specializing other nary associations:
connection a { end a; end b; end c; }
connection c :> a { end a; end b; end c; } // ok