port def TestPort {
port subPorts [10] ordered;
}
interface def TestInterface {
end port p1 : TestPort;
end port p2 : TestPort;
interface connect p1.subPorts#(1) to p2.subPorts#(1);
}
This seems to upset the linter, and I am getting “(parsing-error) unexpected DECIMAL_VALUE” on both of the # operators.
Perhaps the # operator is not valid in this instance and I am misunderstanding. It seems to be working well in some of my other tests.
Expressions as interface ends are not supported by the grammar. The only valid syntax for interface ends is (<cross multiplicity>)? (<name> ::>)? <target> which does not allow indexing. The relevant grammar rule is InterfaceEnd.
Perhaps explicit end syntax is what you are looking for which allows binding values:
interface {
end ::> p1.subPorts = p1.subPorts#(1);
end ::> p2.subPorts = p2.subPorts#(1);
}