diff options
author | Lorenzo Bettini | 2014-08-10 16:48:47 +0000 |
---|---|---|
committer | Lorenzo Bettini | 2014-08-10 16:48:47 +0000 |
commit | 2c011134672ebfdf37610e336d411a337426e8a4 (patch) | |
tree | fe64da001a7aa7f74b54c70ed8dc68c3be1e547b | |
parent | 36e02a26af0d47a0f6185c23eb2cac8b09697234 (diff) | |
download | org.eclipse.emf-parsley-2c011134672ebfdf37610e336d411a337426e8a4.tar.gz org.eclipse.emf-parsley-2c011134672ebfdf37610e336d411a337426e8a4.tar.xz org.eclipse.emf-parsley-2c011134672ebfdf37610e336d411a337426e8a4.zip |
441368: type of fields is mandatory
Change-Id: I45bf228187a1721d4f02b013936609cf85bd70fc
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=441368
5 files changed, 79 insertions, 7 deletions
diff --git a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGeneratorTests.xtend b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGeneratorTests.xtend index cde8a9d21..5f1a10756 100644 --- a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGeneratorTests.xtend +++ b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGeneratorTests.xtend @@ -298,9 +298,16 @@ expectedLabelProvider = package my.empty.ui.provider; import com.google.inject.Inject; +import java.util.ArrayList; +import java.util.List; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.parsley.dsl.tests.inputs.TestExtensions; +import org.eclipse.emf.parsley.examples.library.Library; import org.eclipse.emf.parsley.ui.provider.ViewerLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.xtext.xbase.lib.Extension; +import org.eclipse.xtext.xbase.lib.ObjectExtensions; +import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; @SuppressWarnings("all") public class LabelProviderGen extends ViewerLabelProvider { @@ -315,10 +322,35 @@ public class LabelProviderGen extends ViewerLabelProvider { this.parentLabelProvider = parentLabelProvider; } + @Extension + private final TestExtensions myExtensions = new TestExtensions(); + + public TestExtensions getMyExtensions() { + return this.myExtensions; + } + + private final List<String> listOfString = ObjectExtensions.<ArrayList<String>>operator_doubleArrow(new ArrayList<String>(), new Procedure1<ArrayList<String>>() { + public void apply(final ArrayList<String> it) { + it.add("first"); + it.add("second"); + } + }); + + public List<String> getListOfString() { + return this.listOfString; + } + @Inject public LabelProviderGen(final AdapterFactoryLabelProvider delegate) { super(delegate); } + + public String text(final Library it) { + final ArrayList<Object> myList = new ArrayList<Object>(); + this.myExtensions.printList(myList); + String _text = this.parentLabelProvider.getText(it); + return ("result: " + _text); + } } '''] ) diff --git a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestExtensions.java b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestExtensions.java new file mode 100644 index 000000000..dce666f9a --- /dev/null +++ b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestExtensions.java @@ -0,0 +1,18 @@ +package org.eclipse.emf.parsley.dsl.tests.inputs; + +import java.util.List; + +/** + * This is used to test fields with extension + * + * @author Lorenzo Bettini + */ +public class TestExtensions { + public TestExtensions() { + + } + + public void printList(List<Object> l) { + + } +}
\ No newline at end of file diff --git a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestInputs.xtend b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestInputs.xtend index eef7c531b..8e3102e27 100644 --- a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestInputs.xtend +++ b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestInputs.xtend @@ -131,13 +131,34 @@ module my.empty { def labelProviderWithFields() ''' +import java.util.ArrayList +import java.util.List import com.google.inject.Inject import org.eclipse.jface.viewers.ILabelProvider +import org.eclipse.emf.parsley.dsl.tests.inputs.TestExtensions +import org.eclipse.emf.parsley.examples.library.Library module my.empty { labelProvider { @Inject var ILabelProvider parentLabelProvider; + + // + val extension TestExtensions myExtensions = new TestExtensions(); + + // initialize it with a complex expression + val List<String> listOfString = new ArrayList() => [ + it += "first" + it += "second" + ] + + text { + Library -> { + val myList = new ArrayList() + myList.printList() // extension method from TestExtensions + return 'result: ' + parentLabelProvider.getText(it) + } + } } } ''' diff --git a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/EmfParsleyDsl.xtext b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/EmfParsleyDsl.xtext index 446f22ef7..24eb3bfc2 100644 --- a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/EmfParsleyDsl.xtext +++ b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/EmfParsleyDsl.xtext @@ -64,7 +64,7 @@ LabelProvider: FieldSpecification: annotations+=XAnnotation* (writeable?='var'|'val') extension?='extension'? - (=>(type=JvmTypeReference name=ValidID) | name=ValidID) ('=' right=XExpression)? ';'? + type=JvmTypeReference name=ValidID ('=' right=XExpression)? ';'? ; TableLabelProvider: diff --git a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend index bfbc8d68e..adc6f9ff4 100644 --- a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend +++ b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend @@ -183,19 +183,20 @@ class EmfParsleyDslJvmModelInferrer extends AbstractModelInferrer { def processFields(JvmGenericType it, WithFields dslElement) { for (f : dslElement.fields) { var type = f.type + val name = f.name val initialExp = f.right - if (type == null && initialExp != null) { - type = initialExp.inferredType - } - members += f.toField(f.name, type) => [ + members += f.toField(name, type) => [ final = !f.writeable visibility = JvmVisibility.PRIVATE translateAnnotations(f.annotations) + if (f.extension) { + annotations += f.toAnnotation(typeof(Extension)) + } initializer = initialExp ] - members += f.toGetter(f.name, type) + members += f.toGetter(name, type) if (f.writeable) { - members += f.toSetter(f.name, type) + members += f.toSetter(name, type) } } } |