Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 340420 - [Xbase] Closures with more than 6 parameters
Summary: [Xbase] Closures with more than 6 parameters
Status: CLOSED FIXED
Alias: None
Product: TMF
Classification: Modeling
Component: Xtext (show other bugs)
Version: 2.0.0   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: M7   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-03-18 09:03 EDT by Christian Dietrich CLA
Modified: 2017-09-19 18:04 EDT (History)
2 users (show)

See Also:
sven.efftinge: indigo+


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Christian Dietrich CLA 2011-03-18 09:03:50 EDT
Build Identifier: Xtext 2.0 Trunk as of 2011-03-18

Xbase does Support Closures with more than 6 Parameters but the Compiler/Validator does not. So provide a Validation rule that gives the user an error.

Reproducible: Always

Steps to Reproduce:
Taking following Xtend2 example

class Test {
	
	doit() {
		var n = [Integer i1,Integer i2,Integer i3,Integer i4,Integer i5,Integer i6, Integer i7|i1]
	}
	
}

this is valid in the editor but does not compile / give error on the console

java.lang.RuntimeException: org.eclipse.emf.common.util.WrappedException: XbaseJavaValidator#checkTypes for org.eclipse.xtext.xbase.impl.XClosureImpl@3d96f6fa caused: org.eclipse.xtext.xbase.lib.Functions$Function7
	at org.eclipse.xtext.validation.AbstractDeclarativeValidator$MethodWrapper.invoke(AbstractDeclarativeValidator.java:122)
	at org.eclipse.xtext.validation.AbstractDeclarativeValidator.internalValidate(AbstractDeclarativeValidator.java:288)
	at org.eclipse.xtext.validation.AbstractInjectableValidator.validate(AbstractInjectableValidator.java:62)
	at org.eclipse.xtext.validation.CompositeEValidator.validate(CompositeEValidator.java:119)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:164)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:143)
	at org.eclipse.xtext.validation.CancelableDiagnostician.validate(CancelableDiagnostician.java:36)
	at org.eclipse.emf.ecore.util.Diagnostician.doValidateContents(Diagnostician.java:179)
	at org.eclipse.xtext.validation.CancelableDiagnostician.doValidateContents(CancelableDiagnostician.java:48)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:167)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:143)
	at org.eclipse.xtext.validation.CancelableDiagnostician.validate(CancelableDiagnostician.java:36)
	at org.eclipse.emf.ecore.util.Diagnostician.doValidateContents(Diagnostician.java:179)
	at org.eclipse.xtext.validation.CancelableDiagnostician.doValidateContents(CancelableDiagnostician.java:48)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:167)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:143)
	at org.eclipse.xtext.validation.CancelableDiagnostician.validate(CancelableDiagnostician.java:36)
	at org.eclipse.emf.ecore.util.Diagnostician.doValidateContents(Diagnostician.java:179)
	at org.eclipse.xtext.validation.CancelableDiagnostician.doValidateContents(CancelableDiagnostician.java:48)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:167)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:143)
	at org.eclipse.xtext.validation.CancelableDiagnostician.validate(CancelableDiagnostician.java:36)
	at org.eclipse.emf.ecore.util.Diagnostician.doValidateContents(Diagnostician.java:183)
	at org.eclipse.xtext.validation.CancelableDiagnostician.doValidateContents(CancelableDiagnostician.java:48)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:167)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:143)
	at org.eclipse.xtext.validation.CancelableDiagnostician.validate(CancelableDiagnostician.java:36)
	at org.eclipse.emf.ecore.util.Diagnostician.doValidateContents(Diagnostician.java:183)
	at org.eclipse.xtext.validation.CancelableDiagnostician.doValidateContents(CancelableDiagnostician.java:48)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:167)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:143)
	at org.eclipse.xtext.validation.CancelableDiagnostician.validate(CancelableDiagnostician.java:36)
	at org.eclipse.emf.ecore.util.Diagnostician.validate(Diagnostician.java:126)
	at org.eclipse.xtext.validation.ResourceValidatorImpl.validate(ResourceValidatorImpl.java:108)
	at org.eclipse.xtext.ui.editor.validation.ValidationJob$1.exec(ValidationJob.java:79)
	at org.eclipse.xtext.ui.editor.validation.ValidationJob$1.exec(ValidationJob.java:1)
	at org.eclipse.xtext.util.concurrent.AbstractReadWriteAcces.readOnly(AbstractReadWriteAcces.java:32)
	at org.eclipse.xtext.ui.editor.model.XtextDocument.readOnly(XtextDocument.java:86)
	at org.eclipse.xtext.ui.editor.validation.ValidationJob.createIssues(ValidationJob.java:75)
	at org.eclipse.xtext.ui.editor.validation.ValidationJob.run(ValidationJob.java:64)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: org.eclipse.emf.common.util.WrappedException: XbaseJavaValidator#checkTypes for org.eclipse.xtext.xbase.impl.XClosureImpl@3d96f6fa caused: org.eclipse.xtext.xbase.lib.Functions$Function7
	at org.eclipse.xtext.xbase.validation.XbaseJavaValidator.checkTypes(XbaseJavaValidator.java:80)
	at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.xtext.validation.AbstractDeclarativeValidator$MethodWrapper.invoke(AbstractDeclarativeValidator.java:106)
	... 40 more
Caused by: org.eclipse.emf.common.util.WrappedException: java.lang.ClassNotFoundException: org.eclipse.xtext.xbase.lib.Functions$Function7
	at org.eclipse.xtext.xbase.typing.FunctionConversion.loadFunctionClass(FunctionConversion.java:363)
	at org.eclipse.xtext.xbase.typing.FunctionConversion.createRawFunctionTypeRef(FunctionConversion.java:322)
	at org.eclipse.xtext.xbase.typing.FunctionConversion.createFunctionTypeRef(FunctionConversion.java:330)
	at org.eclipse.xtext.xbase.typing.XbaseTypeProvider._type(XbaseTypeProvider.java:508)
	at sun.reflect.GeneratedMethodAccessor70.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.xtext.util.PolymorphicDispatcher.invoke(PolymorphicDispatcher.java:291)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$2.doComputation(AbstractTypeProvider.java:160)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$2.doComputation(AbstractTypeProvider.java:1)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport$3.get(AbstractTypeProvider.java:418)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport$3.get(AbstractTypeProvider.java:1)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$1.get(AbstractTypeProvider.java:107)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider$CyclicHandlingSupport.getType(AbstractTypeProvider.java:415)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.doGetType(AbstractTypeProvider.java:191)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.getType(AbstractTypeProvider.java:203)
	at org.eclipse.xtext.xbase.typing.AbstractTypeProvider.getType(AbstractTypeProvider.java:199)
	at org.eclipse.xtext.xbase.validation.XbaseJavaValidator.checkTypes(XbaseJavaValidator.java:72)
	... 44 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.xtext.xbase.lib.Functions$Function7
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
	at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	at org.eclipse.xtext.xbase.typing.FunctionConversion.loadFunctionClass(FunctionConversion.java:360)
	... 61 more
Comment 1 Sebastian Zarnekow CLA 2011-03-18 11:14:27 EDT
Hi Christian,

thanks for the report - we are aware of the missing validation. Do you see an actual use case for more than 6 parameters?

Regards,
Sebastian
Comment 2 Christian Dietrich CLA 2011-03-18 11:24:17 EDT
Hi,

no i do not see an usecase for more than 6 parameters - thus a validation rule would be ok for me ;-)
Comment 3 Sven Efftinge CLA 2011-03-26 14:52:52 EDT
pushed to master
Comment 4 Karsten Thoms CLA 2017-09-19 17:53:52 EDT
Closing all bugs that were set to RESOLVED before Neon.0
Comment 5 Karsten Thoms CLA 2017-09-19 18:04:33 EDT
Closing all bugs that were set to RESOLVED before Neon.0