use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.
the class XtendQuickfixProvider method removeUnnecessaryModifier.
@Fix(IssueCodes.UNNECESSARY_MODIFIER)
public void removeUnnecessaryModifier(final Issue issue, IssueResolutionAcceptor acceptor) {
String[] issueData = issue.getData();
if (issueData == null || issueData.length == 0) {
return;
}
// use the same label, description and image
// to be able to use the quickfixes (issue resolution) in batch mode
String label = "Remove the unnecessary modifier.";
String description = "The modifier is unnecessary and could be removed.";
String image = "fix_indent.gif";
acceptor.accept(issue, label, description, image, new ITextualMultiModification() {
@Override
public void apply(IModificationContext context) throws Exception {
if (context instanceof IssueModificationContext) {
Issue theIssue = ((IssueModificationContext) context).getIssue();
Integer offset = theIssue.getOffset();
IXtextDocument document = context.getXtextDocument();
document.replace(offset, theIssue.getLength(), "");
while (Character.isWhitespace(document.getChar(offset))) {
document.replace(offset, 1, "");
}
}
}
});
}
use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.
the class PartialParserTest method validateWithoutException.
protected void validateWithoutException(XtextResource resource) {
ResourceValidatorImpl validator = resourceValidatorProvider.get();
assertNotSame(validator, resource.getResourceServiceProvider().getResourceValidator());
validator.setDiagnosticConverter(new IDiagnosticConverter() {
@Override
public void convertValidatorDiagnostic(org.eclipse.emf.common.util.Diagnostic diagnostic, IAcceptor<Issue> acceptor) {
if (diagnostic instanceof BasicDiagnostic) {
List<?> data = diagnostic.getData();
if (!data.isEmpty() && data.get(0) instanceof Throwable) {
Throwable t = (Throwable) data.get(0);
// and AssertionError does not take a throwable as argument
throw new Error(t);
}
if (EObjectValidator.DIAGNOSTIC_SOURCE.equals(diagnostic.getSource()) && diagnostic.getCode() == EObjectValidator.EOBJECT__EVERY_REFERENCE_IS_CONTAINED) {
throw new Error(new RuntimeException("Dangling reference found."));
}
}
}
@Override
public void convertResourceDiagnostic(Diagnostic diagnostic, Severity severity, IAcceptor<Issue> acceptor) {
if (diagnostic instanceof ExceptionDiagnostic) {
Exception e = ((ExceptionDiagnostic) diagnostic).getException();
// and AssertionError does not take a throwable as argument
throw new Error(new RuntimeException(e));
}
}
});
validator.validate(resource, CheckMode.ALL, CancelIndicator.NullImpl);
}
use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.
the class XImportSectionValidationTest method assertFeatureCallError.
public void assertFeatureCallError(final XtendFile file, final EClass objectType) {
final Resource resource = file.eResource();
final List<Issue> allIssues = this._validationTestHelper.validate(resource);
final Function1<Issue, Boolean> _function = (Issue it) -> {
EObject object = resource.getResourceSet().getEObject(it.getUriToProblem(), true);
final boolean featureCall = ArrayExtensions.contains(it.getData(), UnresolvedFeatureCallTypeAwareMessageProvider.FEATURE_CALL);
return Boolean.valueOf((((Objects.equal(it.getCode(), Diagnostic.LINKING_DIAGNOSTIC) && (it.getSeverity() == Severity.ERROR)) && objectType.isInstance(object)) && featureCall));
};
final Iterable<Issue> match = IterableExtensions.<Issue>filter(allIssues, _function);
boolean _isEmpty = IterableExtensions.isEmpty(match);
if (_isEmpty) {
Assert.fail("No Diagnostic.LINKING_DIAGNOSTIC issue with user data FEATURE_CALL found");
}
}
use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.
the class XtendValidationTest method testRawTypeOnFieldFromTypeLiteral_02.
@Test
public void testRawTypeOnFieldFromTypeLiteral_02() throws Exception {
String fileAsText = "class Foo { public val x = java.util.Map }";
XtendFile file = file(fileAsText);
helper.assertWarning(file, XTEND_FIELD, RAW_TYPE, "The inferred field type Class<Map> uses the raw type Map. References to generic type Map<K, V> should be parameterized");
List<Issue> issues = helper.validate(file);
assertEquals(1, issues.size());
assertEquals(fileAsText.indexOf('x'), issues.get(0).getOffset().intValue());
assertEquals(1, issues.get(0).getLength().intValue());
}
use of org.eclipse.xtext.validation.Issue in project xtext-xtend by eclipse.
the class LinkingTest method testBug345433_01.
@Test
public void testBug345433_01() throws Exception {
String classAsString = "import static extension org.eclipse.xtext.GrammarUtil.*\n" + "class Foo {" + " org.eclipse.xtext.Grammar grammar\n" + " def function1() {\n" + " grammar.containedRuleCalls.filter(e | " + " !e.isAssigned() && !e.isEObjectRuleCall()" + " ).map(e | e.rule)\n" + " }\n" + " def function2() {\n" + " newArrayList(function1().head())\n" + " }\n" + "}";
XtendClass clazz = clazz(classAsString);
IResourceValidator validator = ((XtextResource) clazz.eResource()).getResourceServiceProvider().getResourceValidator();
List<Issue> issues = validator.validate(clazz.eResource(), CheckMode.ALL, CancelIndicator.NullImpl);
assertTrue("Resource contained errors : " + issues.toString(), issues.isEmpty());
XtendFunction function1 = (XtendFunction) clazz.getMembers().get(1);
JvmOperation operation1 = associator.getDirectlyInferredOperation(function1);
assertEquals("java.lang.Iterable<org.eclipse.xtext.AbstractRule>", operation1.getReturnType().getIdentifier());
XtendFunction function2 = (XtendFunction) clazz.getMembers().get(2);
JvmOperation operation2 = associator.getDirectlyInferredOperation(function2);
assertEquals("java.util.ArrayList<org.eclipse.xtext.AbstractRule>", operation2.getReturnType().getIdentifier());
}
Aggregations