use of org.eclipse.xtend.core.xtend.XtendParameter in project xtext-xtend by eclipse.
the class XtendHoverSignatureProviderTest method testSignatureForXtendParameter.
@Test
public void testSignatureForXtendParameter() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("package testPackage");
_builder.newLine();
_builder.append("class Foo {");
_builder.newLine();
_builder.append("\t");
_builder.append("def bar(String a) throws NullPointerException");
_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 XtendFunction xtendFunction = ((XtendFunction) _get);
final XtendParameter xtendParameter = xtendFunction.getParameters().get(0);
final String signature = this.signatureProvider.getSignature(xtendParameter);
Assert.assertEquals("String a - bar(String)", signature);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
use of org.eclipse.xtend.core.xtend.XtendParameter in project xtext-xtend by eclipse.
the class XtendHoverSignatureProviderTest method testAutcastExpressions_3.
@Test
public void testAutcastExpressions_3() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("package testPackage");
_builder.newLine();
_builder.append("class Foo {");
_builder.newLine();
_builder.append("\t");
_builder.append("def foo(CharSequence c) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("if (c instanceof String) {");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("c.substring(1, 1)");
_builder.newLine();
_builder.append("\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t\t");
_builder.append("switch(c){");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("String : c.length");
_builder.newLine();
_builder.append("\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("}");
_builder.newLine();
final XtendFile xtendFile = this.parseHelper.parse(_builder, this.getResourceSet());
XtendTypeDeclaration _head = IterableExtensions.<XtendTypeDeclaration>head(xtendFile.getXtendTypes());
XtendMember _head_1 = IterableExtensions.<XtendMember>head(((XtendClass) _head).getMembers());
final XtendFunction func = ((XtendFunction) _head_1);
Assert.assertEquals("CharSequence c - foo(CharSequence)", this.signatureProvider.getSignature(IterableExtensions.<XtendParameter>head(func.getParameters())));
XExpression _expression = func.getExpression();
final XBlockExpression block = ((XBlockExpression) _expression);
XExpression _head_2 = IterableExtensions.<XExpression>head(block.getExpressions());
final XIfExpression ifexpr = ((XIfExpression) _head_2);
final XExpression then = ifexpr.getThen();
XExpression _head_3 = IterableExtensions.<XExpression>head(((XBlockExpression) then).getExpressions());
final XExpression target = ((XMemberFeatureCall) _head_3).getMemberCallTarget();
Assert.assertEquals("String c", this.signatureProvider.getSignature(target));
XExpression _get = block.getExpressions().get(1);
final XSwitchExpression switchExpr = ((XSwitchExpression) _get);
XExpression _then = IterableExtensions.<XCasePart>head(switchExpr.getCases()).getThen();
final XExpression expr = ((XMemberFeatureCall) _then).getMemberCallTarget();
Assert.assertEquals("String c", this.signatureProvider.getSignature(expr));
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
use of org.eclipse.xtend.core.xtend.XtendParameter in project xtext-xtend by eclipse.
the class XtendReentrantTypeResolver method computeTypes.
protected void computeTypes(ResolvedTypes resolvedTypes, IFeatureScopeSession featureScopeSession, XtendMember member) {
XExpression expression = null;
if (member instanceof XtendFunction) {
XtendFunction function = (XtendFunction) member;
expression = function.getExpression();
CreateExtensionInfo createInfo = function.getCreateExtensionInfo();
if (createInfo != null) {
computeDanglingExpressionType(resolvedTypes, featureScopeSession, function, createInfo.getCreateExpression());
}
for (XtendParameter parameter : function.getParameters()) {
computeXtendAnnotationTypes(resolvedTypes, featureScopeSession, parameter.getAnnotations());
}
} else if (member instanceof XtendConstructor) {
XtendConstructor constructor = (XtendConstructor) member;
expression = constructor.getExpression();
for (XtendParameter parameter : constructor.getParameters()) {
computeXtendAnnotationTypes(resolvedTypes, featureScopeSession, parameter.getAnnotations());
}
} else if (member instanceof XtendField) {
expression = ((XtendField) member).getInitialValue();
}
if (expression != null) {
computeDanglingExpressionType(resolvedTypes, featureScopeSession, member, expression);
}
computeXtendAnnotationTypes(resolvedTypes, featureScopeSession, member.getAnnotations());
}
use of org.eclipse.xtend.core.xtend.XtendParameter in project xtext-xtend by eclipse.
the class XtendJvmModelInferrer method transform.
protected void transform(XtendConstructor source, JvmGenericType container) {
JvmConstructor constructor = typesFactory.createJvmConstructor();
container.getMembers().add(constructor);
associator.associatePrimary(source, constructor);
JvmVisibility visibility = source.getVisibility();
constructor.setSimpleName(container.getSimpleName());
constructor.setVisibility(visibility);
for (XtendParameter parameter : source.getParameters()) {
translateParameter(constructor, parameter);
}
copyAndFixTypeParameters(source.getTypeParameters(), constructor);
for (JvmTypeReference exception : source.getExceptions()) {
constructor.getExceptions().add(jvmTypesBuilder.cloneWithProxies(exception));
}
translateAnnotationsTo(source.getAnnotations(), constructor);
setBody(constructor, source.getExpression());
jvmTypesBuilder.copyDocumentationTo(source, constructor);
}
use of org.eclipse.xtend.core.xtend.XtendParameter in project xtext-xtend by eclipse.
the class XtendJvmModelInferrer method transform.
protected void transform(XtendFunction source, JvmGenericType container, boolean allowDispatch) {
JvmOperation operation = typesFactory.createJvmOperation();
operation.setAbstract(source.isAbstract());
operation.setNative(source.isNative());
operation.setSynchronized(source.isSynchonized());
operation.setStrictFloatingPoint(source.isStrictFloatingPoint());
if (!source.isAbstract())
operation.setFinal(source.isFinal());
container.getMembers().add(operation);
associator.associatePrimary(source, operation);
String sourceName = source.getName();
JvmVisibility visibility = source.getVisibility();
if (allowDispatch && source.isDispatch()) {
if (source.getDeclaredVisibility() == null)
visibility = JvmVisibility.PROTECTED;
sourceName = "_" + sourceName;
}
operation.setSimpleName(sourceName);
operation.setVisibility(visibility);
operation.setStatic(source.isStatic());
if (!operation.isAbstract() && !operation.isStatic() && container.isInterface())
operation.setDefault(true);
for (XtendParameter parameter : source.getParameters()) {
translateParameter(operation, parameter);
}
XExpression expression = source.getExpression();
CreateExtensionInfo createExtensionInfo = source.getCreateExtensionInfo();
JvmTypeReference returnType = null;
if (source.getReturnType() != null) {
returnType = jvmTypesBuilder.cloneWithProxies(source.getReturnType());
} else if (createExtensionInfo != null) {
returnType = jvmTypesBuilder.inferredType(createExtensionInfo.getCreateExpression());
} else if (expression != null) {
returnType = jvmTypesBuilder.inferredType(expression);
} else {
returnType = jvmTypesBuilder.inferredType();
}
operation.setReturnType(returnType);
copyAndFixTypeParameters(source.getTypeParameters(), operation);
for (JvmTypeReference exception : source.getExceptions()) {
operation.getExceptions().add(jvmTypesBuilder.cloneWithProxies(exception));
}
translateAnnotationsTo(source.getAnnotations(), operation);
if (source.isOverride() && generatorConfig.getJavaSourceVersion().isAtLeast(JAVA6) && !containsAnnotation(operation, Override.class) && typeReferences.findDeclaredType(Override.class, source) != null) {
operation.getAnnotations().add(_annotationTypesBuilder.annotationRef(Override.class));
}
if (createExtensionInfo != null) {
transformCreateExtension(source, createExtensionInfo, container, operation, returnType);
} else {
setBody(operation, expression);
}
jvmTypesBuilder.copyDocumentationTo(source, operation);
}
Aggregations