[英]xtext: How to disable textual input validation for generated xtext plugins (dsl)
[英]How to deprecate generated Xtext elements?
我正在用Xtext开发DSL。 我想弃用某些语言元素。 我有一个Xtext文件,可从中生成语言元素。 我希望这些元素被显示为已弃用。
可悲的是,即使编辑器没有抱怨,在元素上添加@Deprecated也不会执行任何操作。 我找不到有关弃用和Xtext的任何信息。
该
validator = {
generateDeprecationValidation = true
}
在工作流程中没有帮助?
Model:
greetings+=Greeting*;
@Deprecated
Greeting:
'Hello' name=ID '!';
这将产生
public abstract class AbstractMyDslValidator extends AbstractDeclarativeValidator {
@Override
protected List<EPackage> getEPackages() {
List<EPackage> result = new ArrayList<EPackage>();
result.add(org.xtext.example.mydsl.myDsl.MyDslPackage.eINSTANCE);
return result;
}
@Check
public void checkDeprecatedGreeting(Greeting element) {
addIssue("This part of the language is marked as deprecated and might get removed in the future!", element, MyDslConfigurableIssueCodesProvider.DEPRECATED_MODEL_PART);
}
}
这样该单元测试将失败
@ExtendWith(InjectionExtension)
@InjectWith(MyDslInjectorProvider)
class MyDslParsingTest {
@Inject ParseHelper<Model> parseHelper
@Inject extension ValidationTestHelper
@Test
def void loadModel() {
val result = parseHelper.parse('''
Hello Xtext!
''')
Assertions.assertNotNull(result)
val errors = result.eResource.errors
Assertions.assertTrue(errors.isEmpty, '''Unexpected errors: «errors.join(", ")»''')
result.assertNoIssues
}
}
结果是
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.