use of org.eclipse.xtext.xbase.XAbstractFeatureCall in project xtext-xtend by eclipse.
the class AbstractOverloadedInstanceMethodTest method linksTo.
protected void linksTo(final String invocation, final String method) {
try {
final XtendFile file = this.file(this.inMethodBody(invocation), false);
XtendTypeDeclaration _head = IterableExtensions.<XtendTypeDeclaration>head(file.getXtendTypes());
final XtendClass c = ((XtendClass) _head);
XtendMember _head_1 = IterableExtensions.<XtendMember>head(c.getMembers());
final XtendFunction m = ((XtendFunction) _head_1);
XExpression _expression = m.getExpression();
final XBlockExpression body = ((XBlockExpression) _expression);
XExpression _last = IterableExtensions.<XExpression>last(body.getExpressions());
final XAbstractFeatureCall featureCall = ((XAbstractFeatureCall) _last);
JvmIdentifiableElement _feature = featureCall.getFeature();
final JvmOperation operation = ((JvmOperation) _feature);
final StandardTypeReferenceOwner owner = new StandardTypeReferenceOwner(this.services, file);
final ParameterizedTypeReference declaration = owner.newParameterizedTypeReference(operation.getDeclaringType());
final BottomResolvedOperation resolved = new BottomResolvedOperation(operation, declaration, this.overrideTester);
Assert.assertEquals(method, resolved.getSimpleSignature());
Assert.assertTrue(IterableExtensions.join(file.eResource().getErrors(), "\n"), file.eResource().getErrors().isEmpty());
Assert.assertNotNull(featureCall.getImplicitReceiver());
Assert.assertNull(featureCall.getImplicitFirstArgument());
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
use of org.eclipse.xtext.xbase.XAbstractFeatureCall in project xtext-xtend by eclipse.
the class AbstractOverloadedStaticMethodTest method linksTo.
protected void linksTo(final String invocation, final String method) {
try {
final XtendFile file = this.file(this.inMethodBody(invocation), false);
XtendTypeDeclaration _head = IterableExtensions.<XtendTypeDeclaration>head(file.getXtendTypes());
final XtendClass c = ((XtendClass) _head);
XtendMember _head_1 = IterableExtensions.<XtendMember>head(c.getMembers());
final XtendFunction m = ((XtendFunction) _head_1);
XExpression _expression = m.getExpression();
final XBlockExpression body = ((XBlockExpression) _expression);
XExpression _last = IterableExtensions.<XExpression>last(body.getExpressions());
final XAbstractFeatureCall featureCall = ((XAbstractFeatureCall) _last);
JvmIdentifiableElement _feature = featureCall.getFeature();
final JvmOperation operation = ((JvmOperation) _feature);
final StandardTypeReferenceOwner owner = new StandardTypeReferenceOwner(this.services, file);
final ParameterizedTypeReference declaration = owner.newParameterizedTypeReference(operation.getDeclaringType());
final BottomResolvedOperation resolved = new BottomResolvedOperation(operation, declaration, this.overrideTester);
Assert.assertEquals(method, resolved.getSimpleSignature());
Assert.assertTrue(IterableExtensions.join(file.eResource().getErrors(), "\n"), file.eResource().getErrors().isEmpty());
Assert.assertNull(featureCall.getImplicitReceiver());
Assert.assertNull(featureCall.getImplicitFirstArgument());
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
use of org.eclipse.xtext.xbase.XAbstractFeatureCall in project xtext-xtend by eclipse.
the class XtendResourceDescription method getImportedNames.
@Override
public Iterable<QualifiedName> getImportedNames() {
if ((this.importedNames != null)) {
return this.importedNames;
}
final HashSet<QualifiedName> result = CollectionLiterals.<QualifiedName>newHashSet();
final EObject astRoot = IterableExtensions.<EObject>head(this.getResource().getContents());
if ((astRoot != null)) {
final IResolvedTypes types = this.typeResolver.resolveTypes(astRoot);
Iterable<XExpression> _filter = Iterables.<XExpression>filter(IteratorExtensions.<Object>toIterable(EcoreUtil.<Object>getAllContents(astRoot, true)), XExpression.class);
for (final XExpression expression : _filter) {
{
boolean _matched = false;
if (expression instanceof XMemberFeatureCall) {
if ((((((XMemberFeatureCall) expression).getFeature() != null) && ((XMemberFeatureCall) expression).getFeature().eIsProxy()) && (!((XMemberFeatureCall) expression).isExplicitOperationCallOrBuilderSyntax()))) {
_matched = true;
final XExpression receiver = ((XMemberFeatureCall) expression).getActualReceiver();
boolean _matched_1 = false;
if (receiver instanceof XAbstractFeatureCall) {
boolean _isTypeLiteral = ((XAbstractFeatureCall) receiver).isTypeLiteral();
if (_isTypeLiteral) {
_matched_1 = true;
final JvmIdentifiableElement type = ((XAbstractFeatureCall) receiver).getFeature();
String _identifier = type.getIdentifier();
String _plus = (_identifier + "$");
String _concreteSyntaxFeatureName = ((XMemberFeatureCall) expression).getConcreteSyntaxFeatureName();
String _plus_1 = (_plus + _concreteSyntaxFeatureName);
QualifiedName _lowerCase = this.nameConverter.toQualifiedName(_plus_1).toLowerCase();
result.add(_lowerCase);
}
}
}
}
if (!_matched) {
if (expression instanceof XAbstractFeatureCall) {
boolean _isTypeLiteral = ((XAbstractFeatureCall) expression).isTypeLiteral();
if (_isTypeLiteral) {
_matched = true;
final JvmIdentifiableElement type = ((XAbstractFeatureCall) expression).getFeature();
if ((type instanceof JvmDeclaredType)) {
final Function1<String, Boolean> _function = (String it) -> {
QualifiedName _lowerCase = this.nameConverter.toQualifiedName(it).toLowerCase();
return Boolean.valueOf(result.add(_lowerCase));
};
this.registerAllTypes(((JvmType) type), _function);
}
}
}
}
final LightweightTypeReference typeRef = types.getActualType(expression);
if ((typeRef != null)) {
final Function1<String, Boolean> _function = (String it) -> {
QualifiedName _lowerCase = this.nameConverter.toQualifiedName(it).toLowerCase();
return Boolean.valueOf(result.add(_lowerCase));
};
this.registerAllTypes(typeRef.getType(), _function);
}
}
}
EList<EObject> _contents = this.getResource().getContents();
for (final EObject eobject : _contents) {
{
final Function1<JvmIdentifiableElement, LightweightTypeReference> _function = (JvmIdentifiableElement it) -> {
LightweightTypeReference _xifexpression = null;
if (((!(it instanceof JvmType)) || (it instanceof JvmDeclaredType))) {
_xifexpression = types.getActualType(it);
}
return _xifexpression;
};
final Iterable<LightweightTypeReference> typesOfIdentifiables = IteratorExtensions.<LightweightTypeReference>toIterable(IteratorExtensions.<JvmIdentifiableElement, LightweightTypeReference>map(Iterators.<JvmIdentifiableElement>filter(EcoreUtil.<Object>getAllContents(eobject, true), JvmIdentifiableElement.class), _function));
for (final LightweightTypeReference typeRef : typesOfIdentifiables) {
if ((typeRef != null)) {
final Function1<String, Boolean> _function_1 = (String it) -> {
QualifiedName _lowerCase = this.nameConverter.toQualifiedName(it).toLowerCase();
return Boolean.valueOf(result.add(_lowerCase));
};
this.registerAllTypes(typeRef.getType(), _function_1);
}
}
}
}
}
Iterables.<QualifiedName>addAll(result, super.getImportedNames());
final Function1<QualifiedName, Boolean> _function = (QualifiedName it) -> {
boolean _contains = XtendResourceDescription.primitivesFilter.contains(it.getLastSegment());
return Boolean.valueOf((!_contains));
};
this.importedNames = IterableExtensions.<QualifiedName>toSet(IterableExtensions.<QualifiedName>filter(result, _function));
return this.importedNames;
}
use of org.eclipse.xtext.xbase.XAbstractFeatureCall in project xtext-xtend by eclipse.
the class LinkingTest method findSingleFeatureCall.
private XAbstractFeatureCall findSingleFeatureCall(XtendClass clazz) {
XtendFunction function = (XtendFunction) clazz.getMembers().get(clazz.getMembers().size() - 1);
XBlockExpression block = (XBlockExpression) function.getExpression();
return (XAbstractFeatureCall) block.getExpressions().get(0);
}
use of org.eclipse.xtext.xbase.XAbstractFeatureCall in project xtext-xtend by eclipse.
the class LinkingTest method testParameterizedExtension_08.
@Test
public void testParameterizedExtension_08() throws Exception {
XtendFile file = file("package testPackage\n" + "import org.eclipse.xtext.testing.util.ParseHelper\n" + "import org.eclipse.xtend.core.xtend.XtendFile\n" + "class C<T extends XtendFile> extends ParseHelper<T> {\n" + " def m() {" + " parse('').xtendTypes\n" + " }\n" + "}\n");
XtendClass c = (XtendClass) file.getXtendTypes().get(0);
XAbstractFeatureCall substring = findSingleFeatureCall(c);
assertEquals("org.eclipse.xtend.core.xtend.XtendFile.getXtendTypes()", substring.getFeature().getIdentifier());
}
Aggregations