Skip to content

Commit

Permalink
Improved metamodel copletion.
Browse files Browse the repository at this point in the history
  • Loading branch information
ylussaud committed Feb 22, 2024
1 parent d7d7b1b commit 83d9b18
Show file tree
Hide file tree
Showing 13 changed files with 46 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,9 @@ public List<AcceleoCompletionProposal> caseErrorMetamodel(ErrorMetamodel errorMe

if (errorMetamodel.getFragment() != null) {
for (String nsURI : EPackage.Registry.INSTANCE.keySet()) {
res.add(new AcceleoCompletionProposal(nsURI, nsURI, AcceleoPackage.Literals.METAMODEL));
if (nsURI.contains(errorMetamodel.getFragment())) {
res.add(new AcceleoCompletionProposal(nsURI, nsURI, AcceleoPackage.Literals.METAMODEL));
}
}
} else if (errorMetamodel.getMissingEndQuote() != -1) {
res.add(AcceleoSyntacticCompletionProposals.QUOTE_DOUBLE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2208,6 +2208,7 @@ protected Metamodel parseMetamodel() {
final int missingEndQuote = readMissingString(QUOTE);
if (ePackage == null || missingEndQuote != -1) {
res = AcceleoPackage.eINSTANCE.getAcceleoFactory().createErrorMetamodel();
((ErrorMetamodel)res).setFragment(nsURI);
((ErrorMetamodel)res).setMissingEndQuote(missingEndQuote);
errors.add((ErrorMetamodel)res);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,8 @@ public Object caseMetamodel(Metamodel metamodel) {

@Override
public Object caseErrorMetamodel(ErrorMetamodel errorMetamodel) {
if (errorMetamodel.getFragment() != null) {
if (errorMetamodel.getFragment() != null && !EPackage.Registry.INSTANCE.containsKey(errorMetamodel
.getFragment())) {
final AcceleoAstResult acceleoAstResult = result.getAcceleoAstResult();
addMessage(errorMetamodel, ValidationMessageLevel.ERROR, "Invalid metamodel " + errorMetamodel
.getFragment(), acceleoAstResult.getStartPosition(errorMetamodel), acceleoAstResult
Expand Down
3 changes: 2 additions & 1 deletion tests/org.eclipse.acceleo.aql.tests/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Require-Bundle: org.junit;bundle-version="4.0.0",
org.eclipse.acceleo.query,
org.eclipse.emf.ecore,
org.eclipse.emf.ecore.xmi,
org.eclipse.acceleo.aql
org.eclipse.acceleo.aql,
org.eclipse.emf.codegen.ecore
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Export-Package: org.eclipse.acceleo.tests.utils
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
* Label:
http://www.eclipse.org/emf/2002/GenModel
* Description:
Inserts the following text: <pre>http://www.eclipse.org/emf/2002/GenModel</pre>
* Text:
http://www.eclipse.org/emf/2002/GenModel
* Type (optional):
http://www.eclipse.org/acceleo/4.0#//Metamodel

* Label:
http://www.eclipse.org/emf/2002/Ecore
* Description:
Inserts the following text: <pre>http://www.eclipse.org/emf/2002/Ecore</pre>
* Text:
http://www.eclipse.org/emf/2002/Ecore
* Type (optional):
http://www.eclipse.org/acceleo/4.0#//Metamodel

* Label:
http://www.eclipse.org/emf/2003/XMLType
* Description:
Inserts the following text: <pre>http://www.eclipse.org/emf/2003/XMLType</pre>
* Text:
http://www.eclipse.org/emf/2003/XMLType
* Type (optional):
http://www.eclipse.org/acceleo/4.0#//Metamodel

Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
* <<moduleCommentAfterAuthor>>@version 0.1.0
* <<moduleCommentAfterAuthorAndVersion>>@since 0.0.1<<moduleCommentAfterAuthorAndVersionAndSince>>
*/]
<<beforeModuleHeader>>[module <<beforeModuleName>>completion('http://www.eclipse.org/emf/2002/Ecore'<<afterModuleMetamodel>>) <<beforeModuleExtends>>extends <<beforeModuleExtendsModuleReference>>org::eclipse::acceleo::<<betweenModuleExtendsModuleReference>>AcceleoPackage<<afterModuleExtendsModuleReference>>/]
<<beforeModuleHeader>>[module <<beforeModuleName>>completion('http://www.eclipse.org/emf/2002/Ecore'<<afterModuleMetamodel>>) <<beforeModuleExtends>>extends org::eclipse::acceleo::AcceleoPackage<<afterModuleExtendsModuleReference>>/]

[import <<beforeImportModuleReference>>org::eclipse::acceleo::<<betweenImportModuleReference>>AcceleoPackage<<afterImportModuleReference>>/]
[import org::eclipse::acceleo::AcceleoPackage<<afterImportModuleReference>>/]

[comment /]
[**
*/]
[import <<beforeImportModuleReference>>org::eclipse::acceleo::<<betweenImportModuleReference>>AcceleoPackage<<afterImportModuleReference>>/]
[import org::eclipse::acceleo::AcceleoPackage<<afterImportModuleReference>>/]

[**
* My query has a nice comment.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,4 @@ header position 0..145
module myModule
metamodel http://www.eclipse.org/emf/2002/Ecore (18..56)
metamodel http://www.eclipse.org/acceleo/query/1.0 (58..99)
*** error metamodel ***
missing end quote: -1
metamodel null (101..142) (0..145)
metamodel http://www.eclipse.org/emf/2002/GenModel (101..142) (0..145)
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,4 @@ header position 0..145
module myModule
metamodel http://www.eclipse.org/emf/2002/Ecore (18..56)
metamodel http://www.eclipse.org/acceleo/query/1.0 (58..99)
*** error metamodel ***
missing end quote: -1
metamodel null (101..142) (0..145)
metamodel http://www.eclipse.org/emf/2002/GenModel (101..142) (0..145)
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,4 @@ header position 0..170
module myModule
metamodel http://www.eclipse.org/emf/2002/Ecore (27..65)
metamodel http://www.eclipse.org/acceleo/query/1.0 (73..114)
*** error metamodel ***
missing end quote: -1
metamodel null (122..163) (0..170)
metamodel http://www.eclipse.org/emf/2002/GenModel (122..163) (0..170)
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,4 @@ header position 0..170
module myModule
metamodel http://www.eclipse.org/emf/2002/Ecore (27..65)
metamodel http://www.eclipse.org/acceleo/query/1.0 (73..114)
*** error metamodel ***
missing end quote: -1
metamodel null (122..163) (0..170)
metamodel http://www.eclipse.org/emf/2002/GenModel (122..163) (0..170)
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[module myModule('http://www.eclipse.org/emf/2002/Ecore', 'http://www.eclipse.org/acceleo/query/1.0', '')/]
[module myModule('http://www.eclipse.org/emf/2002/Ecore', 'http://www.eclipse.org/acceleo/query/1.0', 'http://www.eclipse.org/emf/2002/GenModel')/]
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[module myModule('http://www.eclipse.org/emf/2002/Ecore', 'http://www.eclipse.org/acceleo/query/1.0', '')/]
[module myModule('http://www.eclipse.org/emf/2002/Ecore', 'http://www.eclipse.org/acceleo/query/1.0', 'http://www.eclipse.org/emf/2002/GenModel')/]
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
import org.eclipse.acceleo.query.runtime.impl.namespace.JavaLoader;
import org.eclipse.acceleo.query.runtime.namespace.IQualifiedNameQueryEnvironment;
import org.eclipse.acceleo.query.runtime.namespace.IQualifiedNameResolver;
import org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.ResourceSet;
Expand Down Expand Up @@ -184,6 +185,7 @@ public abstract class AbstractLanguageTestSuite {
* if the tested template can't be read
*/
public AbstractLanguageTestSuite(String testFolder) throws IOException {
GenModelPackage.eINSTANCE.getName(); // initialize the GenModelPackage
this.memoryDestinationString = "acceleotests://" + testFolder + "/";
this.memoryDestination = URI.createURI(memoryDestinationString);
this.testFolderPath = testFolder;
Expand Down

0 comments on commit 83d9b18

Please sign in to comment.