Skip to content
Snippets Groups Projects
Commit c27f7e25 authored by dgelessus's avatar dgelessus
Browse files

Work around Event-B EMF bug that broke adding a variant

Modifying an already existing variant worked, but when adding a new
variant to a machine that didn't have one, Rodin complained that the
variant has an empty label.

This fix requires increasing the minimum Event-B EMF version to
guarantee that Variant.setName exists.
parent 735958ec
No related branches found
No related tags found
No related merge requests found
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
<description> <description>
A text editor for the Rodin platform to edit Event-B models A text editor for the Rodin platform to edit Event-B models
--- Release History --- --- Release History ---
3.5.1 - Fix "Empty label" error when adding a variant to a machine
3.5.0 - Compatibility with EventB-EMF 7.0.0 - fixes CamilleX dependency conflict. Fixed OOM error when top-level end keyword is missing. 3.5.0 - Compatibility with EventB-EMF 7.0.0 - fixes CamilleX dependency conflict. Fixed OOM error when top-level end keyword is missing.
3.4.1 - Internal updates to the build process - no visible changes. 3.4.1 - Internal updates to the build process - no visible changes.
3.4.0 - Release for Rodin 3.5 and related dependencies 3.4.0 - Release for Rodin 3.5 and related dependencies
......
...@@ -16,9 +16,9 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="[3.8.1,4.0.0)", ...@@ -16,9 +16,9 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="[3.8.1,4.0.0)",
org.eclipse.ui.workbench.texteditor, org.eclipse.ui.workbench.texteditor,
org.eventb.core;bundle-version="[3.1.0,4.0.0)", org.eventb.core;bundle-version="[3.1.0,4.0.0)",
org.eventb.core.ast;bundle-version="[3.1.0,4.0.0)", org.eventb.core.ast;bundle-version="[3.1.0,4.0.0)",
org.eventb.emf.core;bundle-version="[4.0.0,7.0.0)", org.eventb.emf.core;bundle-version="[5.0.0,7.0.0)",
org.eventb.emf.formulas;bundle-version="[1.4.0,3.0.0)", org.eventb.emf.formulas;bundle-version="[1.5.0,3.0.0)",
org.eventb.emf.persistence;bundle-version="[3.1.1,5.0.0)";visibility:=reexport, org.eventb.emf.persistence;bundle-version="[3.6.0,5.0.0)";visibility:=reexport,
org.eventb.texteditor.parsers;bundle-version="[3.5.1,3.6.0)", org.eventb.texteditor.parsers;bundle-version="[3.5.1,3.6.0)",
org.eventb.texttools;bundle-version="[3.5.1,3.6.0)";visibility:=reexport, org.eventb.texttools;bundle-version="[3.5.1,3.6.0)";visibility:=reexport,
org.eventb.ui;bundle-version="[3.0.0,4.0.0)";visibility:=reexport, org.eventb.ui;bundle-version="[3.0.0,4.0.0)";visibility:=reexport,
......
...@@ -15,9 +15,9 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="[3.8.1,4.0.0)", ...@@ -15,9 +15,9 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="[3.8.1,4.0.0)",
org.eclipse.jface.text;bundle-version="[3.6.0,4.0.0)", org.eclipse.jface.text;bundle-version="[3.6.0,4.0.0)",
org.eventb.core;bundle-version="[3.1.0,4.0.0)", org.eventb.core;bundle-version="[3.1.0,4.0.0)",
org.eventb.core.ast;bundle-version="[3.1.0,4.0.0)", org.eventb.core.ast;bundle-version="[3.1.0,4.0.0)",
org.eventb.emf.core;bundle-version="[4.0.0,7.0.0)", org.eventb.emf.core;bundle-version="[5.0.0,7.0.0)",
org.eventb.emf.formulas;bundle-version="[1.4.0,3.0.0)", org.eventb.emf.formulas;bundle-version="[1.5.0,3.0.0)",
org.eventb.emf.persistence;bundle-version="[3.1.1,5.0.0)", org.eventb.emf.persistence;bundle-version="[3.6.0,5.0.0)",
org.eventb.texteditor.parsers;bundle-version="[3.5.1,3.6.0)", org.eventb.texteditor.parsers;bundle-version="[3.5.1,3.6.0)",
org.rodinp.core;bundle-version="[1.7.0,2.0.0)" org.rodinp.core;bundle-version="[1.7.0,2.0.0)"
Bundle-Vendor: Heinrich-Heine University Dusseldorf Bundle-Vendor: Heinrich-Heine University Dusseldorf
......
...@@ -11,29 +11,6 @@ import java.util.LinkedList; ...@@ -11,29 +11,6 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Stack; import java.util.Stack;
import org.eclipse.emf.common.util.EList;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eventb.emf.core.EventBCommented;
import org.eventb.emf.core.EventBElement;
import org.eventb.emf.core.EventBNamed;
import org.eventb.emf.core.EventBNamedCommentedPredicateElement;
import org.eventb.emf.core.EventBObject;
import org.eventb.emf.core.context.Axiom;
import org.eventb.emf.core.context.Context;
import org.eventb.emf.core.context.ContextFactory;
import org.eventb.emf.core.machine.Action;
import org.eventb.emf.core.machine.Convergence;
import org.eventb.emf.core.machine.Event;
import org.eventb.emf.core.machine.Guard;
import org.eventb.emf.core.machine.Invariant;
import org.eventb.emf.core.machine.Machine;
import org.eventb.emf.core.machine.MachineFactory;
import org.eventb.emf.core.machine.Variant;
import org.eventb.texttools.TextPositionUtil;
import org.eventb.texttools.model.texttools.TextRange;
import org.eventb.texttools.model.texttools.TexttoolsFactory;
import de.be4.eventb.core.parser.analysis.DepthFirstAdapter; import de.be4.eventb.core.parser.analysis.DepthFirstAdapter;
import de.be4.eventb.core.parser.node.AAction; import de.be4.eventb.core.parser.node.AAction;
import de.be4.eventb.core.parser.node.AAnticipatedConvergence; import de.be4.eventb.core.parser.node.AAnticipatedConvergence;
...@@ -67,6 +44,30 @@ import de.hhu.stups.sablecc.patch.IToken; ...@@ -67,6 +44,30 @@ import de.hhu.stups.sablecc.patch.IToken;
import de.hhu.stups.sablecc.patch.PositionedNode; import de.hhu.stups.sablecc.patch.PositionedNode;
import de.hhu.stups.sablecc.patch.SourcePosition; import de.hhu.stups.sablecc.patch.SourcePosition;
import org.eclipse.emf.common.util.EList;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eventb.core.IVariant;
import org.eventb.emf.core.EventBCommented;
import org.eventb.emf.core.EventBElement;
import org.eventb.emf.core.EventBNamed;
import org.eventb.emf.core.EventBNamedCommentedPredicateElement;
import org.eventb.emf.core.EventBObject;
import org.eventb.emf.core.context.Axiom;
import org.eventb.emf.core.context.Context;
import org.eventb.emf.core.context.ContextFactory;
import org.eventb.emf.core.machine.Action;
import org.eventb.emf.core.machine.Convergence;
import org.eventb.emf.core.machine.Event;
import org.eventb.emf.core.machine.Guard;
import org.eventb.emf.core.machine.Invariant;
import org.eventb.emf.core.machine.Machine;
import org.eventb.emf.core.machine.MachineFactory;
import org.eventb.emf.core.machine.Variant;
import org.eventb.texttools.TextPositionUtil;
import org.eventb.texttools.model.texttools.TextRange;
import org.eventb.texttools.model.texttools.TexttoolsFactory;
public class TransformationVisitor extends DepthFirstAdapter { public class TransformationVisitor extends DepthFirstAdapter {
private IDocument document; private IDocument document;
...@@ -217,6 +218,9 @@ public class TransformationVisitor extends DepthFirstAdapter { ...@@ -217,6 +218,9 @@ public class TransformationVisitor extends DepthFirstAdapter {
TextPositionUtil.annotatePosition(newNode, createTextRange(node)); TextPositionUtil.annotatePosition(newNode, createTextRange(node));
handleComment(newNode, node.getComments()); handleComment(newNode, node.getComments());
// Work around an Event-B EMF bug that sets an explicit empty label and suppresses the default label.
// TODO Allow a label here in the Camille grammar?
newNode.setName(IVariant.DEFAULT_LABEL);
final TFormula exprToken = node.getExpression(); final TFormula exprToken = node.getExpression();
final String exprString = exprToken.getText(); final String exprString = exprToken.getText();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment