use of org.eclipse.xtend.core.xtend.XtendField in project xtext-xtend by eclipse.
the class ActiveAnnotationsProcessingInIDETest method testDocumentationProvider.
@Test
public void testDocumentationProvider() {
StringConcatenation _builder = new StringConcatenation();
_builder.append("package myannotation");
_builder.newLine();
_builder.newLine();
_builder.append("import java.util.List");
_builder.newLine();
_builder.append("import org.eclipse.xtend.lib.macro.Active");
_builder.newLine();
_builder.append("import org.eclipse.xtend.lib.macro.RegisterGlobalsContext");
_builder.newLine();
_builder.append("import org.eclipse.xtend.lib.macro.RegisterGlobalsParticipant");
_builder.newLine();
_builder.append("import org.eclipse.xtend.lib.macro.TransformationContext");
_builder.newLine();
_builder.append("import org.eclipse.xtend.lib.macro.TransformationParticipant");
_builder.newLine();
_builder.append("import org.eclipse.xtend.lib.macro.declaration.MemberDeclaration");
_builder.newLine();
_builder.append("import org.eclipse.xtend.lib.macro.declaration.MutableMemberDeclaration");
_builder.newLine();
_builder.newLine();
_builder.append("@Active(ChangeDocProcessor)");
_builder.newLine();
_builder.append("annotation ChangeDoc {");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("class ChangeDocProcessor implements RegisterGlobalsParticipant<MemberDeclaration>, TransformationParticipant<MutableMemberDeclaration> {");
_builder.newLine();
_builder.newLine();
_builder.append("\t");
_builder.append("override doRegisterGlobals(List<? extends MemberDeclaration> annotatedSourceElements, RegisterGlobalsContext context) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("//do nothing");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("\t");
_builder.append("override doTransform(List<? extends MutableMemberDeclaration> annotatedTargetElements,");
_builder.newLine();
_builder.append("\t\t");
_builder.append("extension TransformationContext context) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("for (it : annotatedTargetElements) {");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("docComment = \"Hello World!\"");
_builder.newLine();
_builder.append("\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("}");
_builder.newLine();
Pair<String, String> _mappedTo = Pair.<String, String>of("myannotation/ChangeDoc.xtend", _builder.toString());
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("package usercode");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append("import myannotation.ChangeDoc");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append("/** ");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("*\t Comment");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("*/");
_builder_1.newLine();
_builder_1.append("@ChangeDoc");
_builder_1.newLine();
_builder_1.append("class UserClass {");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("private UserClass object");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append("}");
_builder_1.newLine();
Pair<String, String> _mappedTo_1 = Pair.<String, String>of("usercode/UserCode.xtend", _builder_1.toString());
final Procedure1<CompilationUnitImpl> _function = (CompilationUnitImpl it) -> {
final XtendClass xtendClass = IterableExtensions.<XtendClass>head(Iterables.<XtendClass>filter(it.getXtendFile().getXtendTypes(), XtendClass.class));
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("@<a href=\"eclipse-xtext-doc:platform:/resource/macroProject/src/myannotation/ChangeDoc.xtend%23/1\">ChangeDoc</a><br>Comment");
this.assertDocumentation(_builder_2, xtendClass);
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append("@<a href=\"eclipse-xtext-doc:platform:/resource/macroProject/src/myannotation/ChangeDoc.xtend%23/1\">ChangeDoc</a><br>Hello World!");
final Function1<XtendField, Boolean> _function_1 = (XtendField it_1) -> {
return Boolean.valueOf(it_1.getName().equals("object"));
};
this.assertDocumentation(_builder_3, IterableExtensions.<XtendField>head(IterableExtensions.<XtendField>filter(Iterables.<XtendField>filter(xtendClass.getMembers(), XtendField.class), _function_1)).getType().getType());
};
this.assertProcessing(_mappedTo, _mappedTo_1, _function);
}
use of org.eclipse.xtend.core.xtend.XtendField in project xtext-xtend by eclipse.
the class FindReferencesTest method testFindReferencesToAnonymousExplicitSuperConstructor.
@Test
public void testFindReferencesToAnonymousExplicitSuperConstructor() throws Exception {
XtendClass classFoo = (XtendClass) testHelper.xtendFile("Foo", "class Foo { new() {} }").getXtendTypes().get(0);
XtendClass classBar = (XtendClass) testHelper.xtendFile("Bar", "class Bar { val foo = new Foo{} }").getXtendTypes().get(0);
waitForBuild();
XtendField fieldFoo = (XtendField) classBar.getMembers().get(0);
JvmConstructor inferredConstructor = associations.getInferredConstructor((XtendConstructor) classFoo.getMembers().get(0));
final MockAcceptor mockAcceptor = new MockAcceptor();
mockAcceptor.expect(((AnonymousClass) fieldFoo.getInitialValue()).getConstructorCall(), inferredConstructor, XCONSTRUCTOR_CALL__CONSTRUCTOR);
findReferencesTester.checkFindReferences(inferredConstructor, "Java References to Foo (/test.project/src/Foo.xtend)", mockAcceptor);
}
use of org.eclipse.xtend.core.xtend.XtendField in project xtext-xtend by eclipse.
the class XtendHoverSignatureProviderTest method testSignatureForXtendFieldWithoutTypeDeclaration.
@Test
public void testSignatureForXtendFieldWithoutTypeDeclaration() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("package testPackage");
_builder.newLine();
_builder.append("import java.util.Collections");
_builder.newLine();
_builder.append("import com.google.inject.Inject");
_builder.newLine();
_builder.newLine();
_builder.append("class Foo {");
_builder.newLine();
_builder.append("\t");
_builder.append("val collections = <String>newArrayList");
_builder.newLine();
_builder.append("}");
_builder.newLine();
final XtendFile xtendFile = this.parseHelper.parse(_builder, this.getResourceSet());
final XtendClass clazz = IterableExtensions.<XtendClass>head(Iterables.<XtendClass>filter(xtendFile.getXtendTypes(), XtendClass.class));
XtendMember _get = clazz.getMembers().get(0);
final XtendField xtendField = ((XtendField) _get);
final String signature = this.signatureProvider.getSignature(xtendField);
Assert.assertEquals("ArrayList<String> collections", signature);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
use of org.eclipse.xtend.core.xtend.XtendField in project xtext-xtend by eclipse.
the class XtendHoverSignatureProviderTest method testSignatureForAnonymousClassFieldTypeTest.
@Test
public void testSignatureForAnonymousClassFieldTypeTest() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("package testPackage");
_builder.newLine();
_builder.newLine();
_builder.append("class C {");
_builder.newLine();
_builder.append("\t");
_builder.append("val r = new Runnable { override run() {} }");
_builder.newLine();
_builder.append("}");
_builder.newLine();
final XtendFile xtendFile = this.parseHelper.parse(_builder, this.getResourceSet());
final XtendClass clazz = IterableExtensions.<XtendClass>head(Iterables.<XtendClass>filter(xtendFile.getXtendTypes(), XtendClass.class));
XtendMember _get = clazz.getMembers().get(0);
final XtendField xtendField = ((XtendField) _get);
final String signature = this.signatureProvider.getSignature(xtendField);
Assert.assertEquals("Runnable r", signature);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
use of org.eclipse.xtend.core.xtend.XtendField in project xtext-xtend by eclipse.
the class XtendUnsugaredHoverTest method testBug380361_2.
@Test
public void testBug380361_2() throws Exception {
StringConcatenation _builder = new StringConcatenation();
_builder.append("package testpackage");
_builder.newLine();
_builder.append("import static extension testpackage.Baz.*");
_builder.newLine();
_builder.append("class Foo {");
_builder.newLine();
_builder.append("\t");
_builder.append("String fieldInFoo");
_builder.newLine();
_builder.append("\t");
_builder.append("extension Extension");
_builder.newLine();
_builder.append("\t");
_builder.append("def void foo(Bar it) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("fieldInBar");
_builder.newLine();
_builder.append("\t\t");
_builder.append("fieldInExtension");
_builder.newLine();
_builder.append("\t\t");
_builder.append("fieldInFoo");
_builder.newLine();
_builder.append("\t\t");
_builder.append("staticFieldInBaz");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("class Bar {");
_builder.newLine();
_builder.append("\t");
_builder.append("public String fieldInBar");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("class Baz {");
_builder.newLine();
_builder.append("\t");
_builder.append("public static String staticFieldInBaz");
_builder.newLine();
_builder.append("}");
_builder.newLine();
final XtendFile xtendFile = this.testHelper.xtendFile(XtendUnsugaredHoverTest.FILEPATH, _builder.toString());
XtendMember _get = IterableExtensions.<XtendClass>head(Iterables.<XtendClass>filter(xtendFile.getXtendTypes(), XtendClass.class)).getMembers().get(2);
final XtendFunction function = ((XtendFunction) _get);
XExpression _expression = function.getExpression();
final XBlockExpression block = ((XBlockExpression) _expression);
final XExpression call = block.getExpressions().get(0);
final XExpression call2 = block.getExpressions().get(1);
final XExpression call3 = block.getExpressions().get(2);
final XExpression call4 = block.getExpressions().get(3);
final XtendTypeDeclaration foo = IterableExtensions.<XtendTypeDeclaration>head(xtendFile.getXtendTypes());
XtendMember _get_1 = foo.getMembers().get(1);
final XtendField extensionField = ((XtendField) _get_1);
final JvmTypeReference extensionFieldType = extensionField.getType();
Assert.assertEquals("testpackage.Extension", extensionFieldType.getIdentifier());
Assert.assertEquals("it.fieldInBar", this.serializer.computeUnsugaredExpression(call));
Assert.assertEquals("this._extension.fieldInExtension", this.serializer.computeUnsugaredExpression(call2));
Assert.assertEquals("this.fieldInFoo", this.serializer.computeUnsugaredExpression(call3));
Assert.assertEquals("", this.serializer.computeUnsugaredExpression(call4));
}
Aggregations