use of org.eclipse.xtext.xbase.XFeatureCall in project xtext-xtend by eclipse.
the class LinkingTest method testExtensionMethodCall_03.
@Test
public void testExtensionMethodCall_03() throws Exception {
XtendClass clazz = clazz("" + "abstract class MyIterable implements Iterable<String> {" + " def doSomething() {\n" + " filter [ s.toUpperCase != null ]\n" + " }\n" + "}");
XtendFunction func = (XtendFunction) clazz.getMembers().get(0);
final XFeatureCall call = (XFeatureCall) ((XBlockExpression) func.getExpression()).getExpressions().get(0);
assertEquals("org.eclipse.xtext.xbase.lib.IterableExtensions.filter(java.lang.Iterable,org.eclipse.xtext.xbase.lib.Functions$Function1)", call.getFeature().getIdentifier());
assertNull(call.getInvalidFeatureIssueCode(), call.getInvalidFeatureIssueCode());
JvmOperation operation = associator.getDirectlyInferredOperation(func);
assertEquals("Iterable<String>", operation.getReturnType().getSimpleName());
}
use of org.eclipse.xtext.xbase.XFeatureCall in project xtext-xtend by eclipse.
the class LinkingTest method testStaticImports_06.
@Test
public void testStaticImports_06() throws Exception {
String fileAsText = "import static com.google.common.collect.Iterables.*\n" + "import static java.util.Collections.*\n" + "class Clazz { def void method() {find(singletonList(''), [e|e!=null])} }";
XtendFile file = file(fileAsText, true);
XtendFunction function = (XtendFunction) ((XtendClass) file.getXtendTypes().get(0)).getMembers().get(0);
XFeatureCall featureCall = (XFeatureCall) ((XBlockExpression) function.getExpression()).getExpressions().get(0);
String identifier = featureCall.getFeature().getIdentifier();
assertEquals("com.google.common.collect.Iterables.find(java.lang.Iterable,com.google.common.base.Predicate)", identifier);
}
use of org.eclipse.xtext.xbase.XFeatureCall in project xtext-xtend by eclipse.
the class LinkingTest method testImplicitFirstArgument_05.
@Test
public void testImplicitFirstArgument_05() throws Exception {
XtendClass clazz = clazz("import static extension test.ImplicitFirstArgumentStatics.*\n" + "class MyXtendClass {\n" + " def testExtensionMethods(CharSequence it) {\n" + " withObject\n" + " }\n" + " extension String" + " def withObject(Object obj) { null }" + "}");
XtendFunction func = (XtendFunction) clazz.getMembers().get(0);
XFeatureCall fifth = (XFeatureCall) ((XBlockExpression) func.getExpression()).getExpressions().get(0);
JvmOperation fifthFeature = (JvmOperation) fifth.getFeature();
assertEquals("MyXtendClass.withObject(java.lang.Object)", fifthFeature.getIdentifier());
assertEquals(1, fifthFeature.getParameters().size());
assertNotNull(fifth.getImplicitFirstArgument());
assertEquals("it", ((XAbstractFeatureCall) fifth.getImplicitFirstArgument()).getFeature().getSimpleName());
XFeatureCall fifthReceiver = (XFeatureCall) fifth.getImplicitReceiver();
assertTrue(fifthReceiver.getFeature() instanceof JvmGenericType);
assertNull(fifth.getInvalidFeatureIssueCode(), fifth.getInvalidFeatureIssueCode());
}
use of org.eclipse.xtext.xbase.XFeatureCall in project xtext-xtend by eclipse.
the class UnicodeEscapeLinkingTest method testIdentifiersWithUnicode_01.
@Test
public void testIdentifiersWithUnicode_01() throws Exception {
XtendClass clazz = clazz("class A {\n" + " String a\n" + " def m() {\n" + " \\u0061\n" + " }\n" + "}");
XFeatureCall call = (XFeatureCall) ((XBlockExpression) ((XtendFunction) clazz.getMembers().get(1)).getExpression()).getExpressions().get(0);
JvmIdentifiableElement feature = call.getFeature();
assertFalse(feature.eIsProxy());
assertSame(feature, associator.getJvmField((XtendField) clazz.getMembers().get(0)));
}
use of org.eclipse.xtext.xbase.XFeatureCall in project xtext-xtend by eclipse.
the class ParserTest method testFunction_0.
@Test
public void testFunction_0() throws Exception {
XtendFunction func = function("def foo() {foo}");
assertEquals("foo", func.getName());
assertTrue(((XBlockExpression) func.getExpression()).getExpressions().get(0) instanceof XFeatureCall);
assertEquals(0, func.getParameters().size());
assertNull(func.getReturnType());
assertEquals(0, func.getTypeParameters().size());
}
Aggregations