From fa5196774a43913fe79e1befe3f93bcdc90de4ab Mon Sep 17 00:00:00 2001
From: Michael Leuschel <leuschel@uni-duesseldorf.de>
Date: Wed, 20 Nov 2024 10:16:16 +0100
Subject: [PATCH] export carrier set comments as desription pragmas

Signed-off-by: Michael Leuschel <leuschel@uni-duesseldorf.de>
---
 .../eventb/translator/ContextTranslator.java    | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java b/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java
index af6fd02f..0174b35d 100644
--- a/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java
+++ b/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java
@@ -18,6 +18,7 @@ import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.CoreException;
 import org.eventb.core.EventBAttributes;
 import org.eventb.core.IAxiom;
+import org.eventb.core.ICarrierSet;
 import org.eventb.core.IContextRoot;
 import org.eventb.core.IEventBRoot;
 import org.eventb.core.IExtendsContext;
@@ -52,6 +53,7 @@ import de.be4.classicalb.core.parser.node.ADeferredSetSet;
 import de.be4.classicalb.core.parser.node.ADescriptionExpression;
 import de.be4.classicalb.core.parser.node.ADescriptionPragma;
 import de.be4.classicalb.core.parser.node.ADescriptionPredicate;
+import de.be4.classicalb.core.parser.node.ADescriptionSet;
 import de.be4.classicalb.core.parser.node.AEventBContextParseUnit;
 import de.be4.classicalb.core.parser.node.AExtendsContextClause;
 import de.be4.classicalb.core.parser.node.AIdentifierExpression;
@@ -314,9 +316,22 @@ public final class ContextTranslator extends AbstractComponentTranslator {
 		final ISCCarrierSet[] carrierSets = context.getSCCarrierSets();
 		final List<PSet> setList = new ArrayList<PSet>(carrierSets.length);
 		for (final ISCCarrierSet carrierSet : carrierSets) {
+		    
 			final ADeferredSetSet deferredSet = new ADeferredSetSet(Arrays
 					.asList(new TIdentifierLiteral[] { new TIdentifierLiteral(carrierSet.getIdentifierString()) }));
-			setList.add(deferredSet);
+			
+			final ICarrierSet ucs = (ICarrierSet) carrierSet.getSource(); // comments only attached in unchecked source
+			if (ucs.hasAttribute(EventBAttributes.COMMENT_ATTRIBUTE)) {
+                final String commentString = ucs.getAttributeValue(EventBAttributes.COMMENT_ATTRIBUTE);
+			    System.out.println("Carrier set " + carrierSet + " has comment " + commentString);
+			     
+				final TPragmaFreeText desc = new TPragmaFreeText(commentString);
+				ADescriptionPragma descPragma = new ADescriptionPragma(Collections.singletonList(desc));
+				final ADescriptionSet descid = new ADescriptionSet(descPragma,deferredSet);
+			    setList.add(descid);
+			} else {
+			    setList.add(deferredSet);
+			}
 		}
 		return new ASetsContextClause(setList);
 	}
-- 
GitLab