Расширение области действия XFeatureCall - PullRequest
0 голосов
/ 15 мая 2019

Это некоторое время меня озадачивало ... Я провел исследование, много чего пробовал, но с треском провалился. Пришло время спросить здесь.

В моей грамматике есть это правило для определения типов:

MyTypeDeclaration returns XExpression:
    =>({MyTypeDeclaration} type=JvmTypeReference name=ValidID '(')
    (params+=FullJvmFormalParameter (',' params+=FullJvmFormalParameter)*)?
  ')' block=XBlockExpression
;

Конечно, в выводе я сопоставляю его с классом (с супертипом MySupertype, чтобы отличать его от других классов Java)

    members += f.toClass(f.fullyQualifiedName) [
      superTypes += typeRef(MySupertype)
      ...

      members += f.toConstructor [
        for (p : f.params)
          parameters += p.toParameter(p.name, p.parameterType)
        body = f.block
      ]
      ...
    ]

Мне нужно вызвать этот класс как функцию, например, используя XFeatureCall. XFeatureCall :: feature - это JvmIdentifiableElement, как и MyTypeDeclaration при отображении (в компиляторе я добавлю «новый» префикс для вызова конструктора класса). Однако, естественно, XFeatureClass не включает классы Java в область видимости по умолчанию.

Итак, вопрос в том, как изменить это поведение? Мне нужно включить экземпляры MyTypeDeclaration (или, в более общем случае, классы Java с MySupertype в качестве суперкласса) в область действия XFeatureClass. Я посмотрел на тип компьютера, getLinkingCandidates и другие, но для меня это выглядит слишком загадочно.

Я использую версию 2.15, так как мне нужен GWT ...

Пожалуйста, помогите, так как я действительно застрял на этом этапе ...

Спасибо

Martin

...