gama-platform / gama

Main repository for developing the 2024+ versions of GAMA
https://gama-platform.org
GNU General Public License v3.0
17 stars 5 forks source link

xtext validation not working on new installation #280

Closed lesquoyb closed 3 weeks ago

lesquoyb commented 1 month ago

Describe the bug It's an issue that is not happening on all computers, I just noticed it on my home computer but everything works fine on my work computer. I have some models that just cannot be validated by xtext when I run gama from eclipse. The models themselves do not show any error but I can't see any experiment button, and I get this error message when I open a new one in the editor: image The stack in eclipse is this:

!MESSAGE org.eclipse.xtext.builder.clustering.ClusteringBuilderState  - Error validating platform:/resource/Generated%20From%20Serialize/models/Serialize%20Tests.experiment

!STACK 0
java.lang.NullPointerException: Cannot invoke "gama.gaml.types.IType.distanceTo(gama.gaml.types.IType)" because the return value of "gama.gaml.types.GamaType.getParent()" is null
    at gama.gaml.types.GamaType.distanceTo(GamaType.java:342)
    at gama.gaml.types.Signature.distanceTo(Signature.java:201)
    at gama.gaml.types.Signature.distanceTo(Signature.java:239)
    at gama.gaml.expressions.GamlExpressionFactory.createOperator(GamlExpressionFactory.java:279)
    at gaml.compiler.gaml.expression.GamlExpressionCompiler.binary(GamlExpressionCompiler.java:466)
    at gaml.compiler.gaml.expression.GamlExpressionCompiler.binary(GamlExpressionCompiler.java:537)
    at gaml.compiler.gaml.expression.GamlExpressionCompiler.caseBinaryOperator(GamlExpressionCompiler.java:491)
    at gaml.compiler.gaml.expression.GamlExpressionCompiler.caseBinaryOperator(GamlExpressionCompiler.java:1)
    at gaml.compiler.gaml.util.GamlSwitch.doSwitch(GamlSwitch.java:539)
    at gaml.compiler.gaml.expression.GamlExpressionCompiler.compile(GamlExpressionCompiler.java:227)
    at gaml.compiler.gaml.expression.GamlExpressionCompiler.compile(GamlExpressionCompiler.java:189)
    at gama.gaml.expressions.GamlExpressionFactory.createExpr(GamlExpressionFactory.java:163)
    at gama.gaml.descriptions.BasicExpressionDescription.compile(BasicExpressionDescription.java:103)
    at gama.gaml.descriptions.SymbolDescription.compileExpression(SymbolDescription.java:864)
    at gama.gaml.descriptions.SymbolDescription.lambda$3(SymbolDescription.java:816)
    at gama.gaml.statements.Facets.forEachFacet(Facets.java:270)
    at gama.gaml.descriptions.SymbolDescription.visitFacets(SymbolDescription.java:260)
    at gama.gaml.descriptions.SymbolDescription.validateFacets(SymbolDescription.java:806)
    at gama.gaml.descriptions.SymbolDescription.validate(SymbolDescription.java:777)
    at gama.gaml.descriptions.StatementDescription.validate(StatementDescription.java:237)
    at gama.gaml.descriptions.IDescription.lambda$2(IDescription.java:169)
    at gama.gaml.descriptions.StatementWithChildrenDescription.visitOwnChildren(StatementWithChildrenDescription.java:90)
    at gama.gaml.descriptions.SymbolDescription.validateChildren(SymbolDescription.java:1004)
    at gama.gaml.descriptions.SymbolDescription.validate(SymbolDescription.java:777)
    at gama.gaml.descriptions.StatementDescription.validate(StatementDescription.java:237)
    at gama.gaml.descriptions.IDescription.lambda$2(IDescription.java:169)
    at gama.core.util.IMap.forEachValue(IMap.java:660)
    at gama.gaml.descriptions.SpeciesDescription.visitOwnChildren(SpeciesDescription.java:1026)
    at gama.gaml.descriptions.ExperimentDescription.visitOwnChildren(ExperimentDescription.java:232)
    at gama.gaml.descriptions.SymbolDescription.validateChildren(SymbolDescription.java:1004)
    at gama.gaml.descriptions.SpeciesDescription.validateChildren(SpeciesDescription.java:917)
    at gama.gaml.descriptions.SymbolDescription.validate(SymbolDescription.java:777)
    at gama.gaml.descriptions.TypeDescription.validate(TypeDescription.java:844)
    at gama.gaml.descriptions.IDescription.lambda$2(IDescription.java:169)
    at gama.core.util.IMap.forEachValue(IMap.java:660)
    at gama.gaml.descriptions.ModelDescription.visitOwnChildren(ModelDescription.java:463)
    at gama.gaml.descriptions.SymbolDescription.validateChildren(SymbolDescription.java:1004)
    at gama.gaml.descriptions.SpeciesDescription.validateChildren(SpeciesDescription.java:917)
    at gama.gaml.descriptions.SymbolDescription.validate(SymbolDescription.java:777)
    at gama.gaml.descriptions.TypeDescription.validate(TypeDescription.java:844)
    at gama.gaml.descriptions.ModelDescription.validate(ModelDescription.java:498)
    at gaml.compiler.gaml.resource.GamlResource.validate(GamlResource.java:221)
    at gaml.compiler.gaml.validation.GamlResourceValidator.lambda$0(GamlResourceValidator.java:91)
    at gama.dev.DEBUG.TIMER(DEBUG.java:136)
    at gaml.compiler.gaml.validation.GamlResourceValidator.validate(GamlResourceValidator.java:78)
    at org.eclipse.xtext.ui.validation.DefaultResourceUIValidatorExtension.addMarkers(DefaultResourceUIValidatorExtension.java:61)
    at org.eclipse.xtext.ui.validation.DefaultResourceUIValidatorExtension.updateValidationMarkers(DefaultResourceUIValidatorExtension.java:47)
    at gaml.compiler.ui.decorators.GamlMarkerUpdater.updateMarkers(GamlMarkerUpdater.java:64)
    at org.eclipse.xtext.builder.builderState.AbstractBuilderState.updateMarkers(AbstractBuilderState.java:137)
    at org.eclipse.xtext.builder.clustering.ClusteringBuilderState.doUpdate(ClusteringBuilderState.java:285)
    at org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:171)
    at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:522)
    at org.eclipse.xtext.builder.impl.XtextBuilder.addInfosFromTaskAndBuild(XtextBuilder.java:456)
    at org.eclipse.xtext.builder.impl.XtextBuilder.fullBuild(XtextBuilder.java:563)
    at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:334)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1077)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:296)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:352)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:441)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:444)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:555)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:503)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:585)
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:207)
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:300)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

I made sure to clean the project and recreate a new gama workspace but I have exactly the same problem.

To Reproduce Steps to reproduce the behavior:

  1. Maybe create a new eclipse workspace ?
  2. run the latest version of gama from git
  3. try to open the model Clean Line Network.gaml
  4. See error

As a note, there's no problem on the same computer with the release of last month so either it's something specific to eclipse or it's from a commit that happened during that time span.

Expected behavior I can run my models as I could before

lesquoyb commented 3 weeks ago

It just disappeared after some time and I'm now able to compile this model on the same computer. Closing it for now and I will reopen in case I found a way to replicate