Ошибка учебника JetBrains MPS Shapes
Я следовал учебному пособию по JetBrains MPS Shapes: https://confluence.jetbrains.com/display/MPSD32/Shapes+-+an+introductory+MPS+tutorial
В разделе учебника "Более устойчивое поколение для квадратов" есть следующее определение:
template reduce_Square
input Square
parameters
<< ... >>
content node:
{
Graphics g = null;
<TF {
->$g.setColor(Color.->$red);
->$g.drawRect($10, $10, $10, $10);
} TF>
}
И эталонный макрос для g (который вы можете увидеть в части редактора Inspector, если навести курсор на ->$g):
(outputNode, genContext, operationContext, node)->join(node<VariableDeclaration> | string) {
genContext.get output graphicParam for (node.parent : Canvas);
}
Тем не менее, при попытке перестроить язык "Shapes" я получаю следующее сообщение об ошибке (4 раза, дважды для каждого ->$g):
type node<> is not a subtype of node<VariableDeclaration>
1 ответ
Не могли бы вы проверить, правильно ли вы указали концепции от и до для метки сопоставления? Это должно быть "label graphicsParam: Canvas -> ParameterDeclaration", как указано в руководстве.