(refs #7250) Merging master, minor CHR bugfixes 90/590/1
authorHannu Niemistö <hannu.niemisto@semantum.fi>
Fri, 2 Jun 2017 13:39:28 +0000 (16:39 +0300)
committerHannu Niemistö <hannu.niemisto@semantum.fi>
Fri, 2 Jun 2017 14:34:55 +0000 (17:34 +0300)
Change-Id: I11c76beee0e73ff78370f72bbfb88fdbdf6c7616

28 files changed:
bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/ResourceCollectionVariableMap.java [new file with mode: 0644]
bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/StandardGraphChildVariable.java
bundles/org.simantics.modeling.ontology/graph/ModelingViewpoint.pgraph
bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/CodeGeneration.java
bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/Elaboration.java
bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/chr/CHRRuleset.java
bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/modules/DerivedProperty.java [new file with mode: 0644]
bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/modules/MethodImplementation.java
bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/SSAFunction.java
bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/ssa/statements/LetApply.java
bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/parsing/translation/ValueRepository.java
bundles/org.simantics.scl.db/scl/Simantics/DB.scl
bundles/org.simantics.scl.db/scl/Simantics/Variables.scl
bundles/org.simantics.scl.runtime/scl/Iterator.scl
bundles/org.simantics.scl.runtime/scl/MSet.scl
bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/info/SCLInfo.java
bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/ModuleNameTreeEntry.java
bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTree.java
bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTreeContentProvider.java [new file with mode: 0644]
bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTreeLabelProvider.java [new file with mode: 0644]
bundles/org.simantics.spreadsheet.common/src/org/simantics/spreadsheet/common/TreeTableCell.java
features/org.simantics.sdk.feature/feature.xml
releng/doc/release.html
releng/doc/release.md
releng/org.simantics.sdk.build.targetdefinition/simantics.target
releng/org.simantics.sdk.repository/pom.xml
tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/ModuleRegressionTests.java
tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/UnimplementedTests.java

diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/ResourceCollectionVariableMap.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/variable/ResourceCollectionVariableMap.java
new file mode 100644 (file)
index 0000000..9f03268
--- /dev/null
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Association for Decentralized Information Management in
+ * Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Semantum Oy - initial API and implementation
+ *******************************************************************************/
+package org.simantics.db.layer0.variable;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.exception.DatabaseException;
+
+/**
+ * Used for defining custom variable spaces in SCL.
+ * See SCL module <code>Simantics/Variables</code> function
+ * <code>createVariableMap :: [Resource] -> VariableMap</code>.
+ *
+ * @author Antti Villberg
+ * @since 1.29.0
+ */
+public class ResourceCollectionVariableMap extends VariableMapImpl {
+
+       final private Collection<Resource> resources;
+
+       public ResourceCollectionVariableMap(Collection<Resource> resources) {
+               this.resources = resources;
+       }
+
+       @Override
+       public Map<String, Variable> getVariables(ReadGraph graph, Variable context, Map<String, Variable> map)
+                       throws DatabaseException {
+               for(Resource resource : resources) {
+                       if(map == null) map = new HashMap<>();
+                       Variable child = new StandardGraphChildVariable(context, null, resource);
+                       map.put(child.getName(graph), child);
+               }
+               return map;
+       }
+
+}
index 17fc21ebb911bb2130ff3cd10c662f9a083b9162..cffd74727c8000ed8e84cb15dfc582480702c106 100644 (file)
@@ -264,7 +264,9 @@ public class StandardGraphChildVariable extends AbstractChildVariable {
 
        protected VariableMap getPossibleChildVariableMap(ReadGraph graph) throws DatabaseException {
            if(resource == null) return All.standardChildDomainChildren;
-               return graph.getPossibleRelatedValue2(resource, Layer0.getInstance(graph).domainChildren, this);
+           Resource domainChildren = Layer0.getInstance(graph).domainChildren;
+               return graph.getPossibleRelatedValue2(resource, domainChildren, 
+                               new StandardGraphPropertyVariable(graph, this, domainChildren));
        }
        
        @Override
index e71c13997a661d9c729872e23054efe5883b3824..cd3f1f31f996a4d8eb4a26237b7ca09baab4870a 100644 (file)
@@ -365,6 +365,13 @@ IMAGES.ComponentLock : IMAGE.PngImage
 MBC
     @VP.dropActionContribution MOD.Subscription MAC.Actions.SubscriptionDropAction 1.0
 
+MOD.sclChildRule : L0.Template
+    @template %action %expression
+        %action : MOD.SCLChildRule
+          MOD.SCLChildRule.getChildren _ : MOD.SCLValue
+            L0.SCLValue.expression %expression
+            L0.HasValueType "Resource -> <ReadGraph> [Resource]"
+
 MOD.sclAction : L0.Template
     @template %action %expression
         %action : MOD.SCLAction
index a8dca8c1133950ae64e397c4aca34fb033cc9083..5d258dd9e2b819c9d2ea4576718c65522586c384 100644 (file)
@@ -17,6 +17,7 @@ import org.simantics.scl.compiler.constants.ThisConstant;
 import org.simantics.scl.compiler.elaboration.contexts.SimplificationContext;
 import org.simantics.scl.compiler.elaboration.expressions.Expression;
 import org.simantics.scl.compiler.elaboration.macros.StandardMacroRule;
+import org.simantics.scl.compiler.elaboration.modules.DerivedProperty;
 import org.simantics.scl.compiler.elaboration.modules.InlineProperty;
 import org.simantics.scl.compiler.elaboration.modules.MethodImplementation;
 import org.simantics.scl.compiler.elaboration.modules.PrivateProperty;
@@ -124,13 +125,18 @@ public class CodeGeneration {
                     decomposed.typeParameters, 
                     decomposed.returnType, 
                     decomposed.parameterTypes));*/
+            boolean isDerived = false;
             for(SCLValueProperty prop : value.getProperties()) {
                 if(prop instanceof InlineProperty) {
                     InlineProperty inlineProperty = (InlineProperty)prop;
                     constant.setInlineArity(inlineProperty.arity, inlineProperty.phaseMask);
                 }
                 else if(prop == PrivateProperty.INSTANCE)
-                    constant.setPrivate(true);
+                    constant.setPrivate(!isDerived);
+                else if(prop == DerivedProperty.INSTANCE) {
+                    constant.setPrivate(false);
+                    isDerived = true;
+                }
             }
         }
         // This is quite hackish optimization that can be possibly removed when
index 6499ab4fe7d09fac0fd4f793fd4b3e7b2f6da80d..359448e1d65adf505e970e80e328ddb8d62cc079 100644 (file)
@@ -41,6 +41,7 @@ import org.simantics.scl.compiler.elaboration.fundeps.Fundep;
 import org.simantics.scl.compiler.elaboration.java.JavaMethodDeclaration;
 import org.simantics.scl.compiler.elaboration.macros.StandardMacroRule;
 import org.simantics.scl.compiler.elaboration.modules.DeprecatedProperty;
+import org.simantics.scl.compiler.elaboration.modules.DerivedProperty;
 import org.simantics.scl.compiler.elaboration.modules.InlineProperty;
 import org.simantics.scl.compiler.elaboration.modules.MethodImplementation;
 import org.simantics.scl.compiler.elaboration.modules.PrivateProperty;
@@ -602,6 +603,7 @@ public class Elaboration {
                     String fullName = instancePrefix + valueName;
                     long loc = valueDefs.getDefinition(valueName).get(0).location;
                     valueDefinitionsAst.addFrom(valueDefs, valueName, fullName);
+                    valueDefinitionsAst.setDerived(fullName);
                     /*valueDefinitionsAst.addAnnotation(fullName, new DAnnotationAst(new EVar("@private"), 
                             Collections.<Expression>emptyList()));*/
                     TypeClassMethod method = typeClass.methods.get(valueName);
@@ -1171,6 +1173,8 @@ public class Elaboration {
             value.definitionLocation = location;
             if(module.addValue(value))
                 errorLog.log(location, "Value " + name + " is already defined.");
+            if(valueDefinitionsAst.isDerived(name))
+                value.addProperty(DerivedProperty.INSTANCE);
         }
         for(DValueTypeAst valueTypeAst : typeAnnotationsAst)
             for(EVar name : valueTypeAst.names) {
index d5f61965454e80006631d98d76621fc56ba94e50..bb00f08850f8fa3cd6f21586a8b60a6e052ff640 100644 (file)
@@ -215,6 +215,7 @@ public class CHRRuleset extends Symbol {
             int max = 1 << constraint.parameterTypes.length;
             for(int i=0;i<max;++i)
                 constraint.getOrCreateIndex(cachedContext, i);
+            constraint.setMayBeRemoved();
             /*
             constraint.getOrCreateIndex(cachedContext, 0);
             if(constraint.parameterTypes.length > 0)
diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/modules/DerivedProperty.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/elaboration/modules/DerivedProperty.java
new file mode 100644 (file)
index 0000000..b487290
--- /dev/null
@@ -0,0 +1,5 @@
+package org.simantics.scl.compiler.elaboration.modules;
+
+public enum DerivedProperty implements SCLValueProperty {
+    INSTANCE;
+}
index a381915014364e6ea63ec62f04790cfc819146ca..b9b0269e967b9daa9bb52f027568b07c9bb13366 100644 (file)
@@ -6,19 +6,9 @@ public class MethodImplementation {
     
     public final Name name;
     public final boolean isDefault;
-    private SCLValue value;
     
     public MethodImplementation(Name name, boolean isDefault) {
         this.name = name;
         this.isDefault = isDefault;
     }
-
-    public SCLValue getValue() {
-        return value;
-    }
-    
-    public void setValue(SCLValue value) {
-        this.value = value;
-    }
-    
 }
index ab643f9a15b1669be060ae165c07a403cb3888c3..b9e8bfbb398e0803977e305533259eb0eb6d4982 100644 (file)
@@ -359,6 +359,8 @@ public final class SSAFunction extends SSAClosure {
     }
 
     public void mergeBlocks(SSAFunction function) {
+        if(this == function)
+            throw new InternalCompilerError();
         SSABlock block = function.firstBlock;
         while(block != null) {
             SSABlock next = block.next;
index 6d139a4d6fda4f1927ac84b9a99f550456503d49..400cb6e4e373f78c480e8fc37c1da3dc203a47f2 100644 (file)
@@ -399,7 +399,7 @@ public class LetApply extends LetStatement implements ValRefBinder {
         tailBlock.setExit(headBlock.getExit());
         
         // Merge blocks        
-        thisFunction.mergeBlocks(function);           
+        thisFunction.mergeBlocks(function);
         
         headBlock.setExit(new Jump(function.getFirstBlock().createOccurrence(), 
                 parameters));
index d0e81402d17fa6e07636f0bd685fef830ba64017..a0d5702222c5a157eb10a49169872f8f18ff7b08 100644 (file)
@@ -12,12 +12,14 @@ import org.simantics.scl.compiler.internal.parsing.declarations.DValueAst;
 import gnu.trove.impl.Constants;
 import gnu.trove.map.hash.THashMap;
 import gnu.trove.map.hash.TObjectLongHashMap;
+import gnu.trove.set.hash.THashSet;
 
 public class ValueRepository {
     THashMap<String, ArrayList<DValueAst>> values = 
             new THashMap<String, ArrayList<DValueAst>>();
     THashMap<String, ArrayList<DAnnotationAst>> annotations = 
             new THashMap<String, ArrayList<DAnnotationAst>>();
+    THashSet<String> derived = new THashSet<String>(); 
     TObjectLongHashMap<String> locations = new TObjectLongHashMap<String>(Constants.DEFAULT_CAPACITY, Constants.DEFAULT_LOAD_FACTOR,
             Locations.NO_LOCATION); 
             
@@ -85,4 +87,12 @@ public class ValueRepository {
     public long getLocation(String name) {
         return locations.get(name);
     }
+    
+    public boolean isDerived(String name) {
+        return derived.contains(name);
+    }
+    
+    public void setDerived(String name) {
+        derived.add(name);
+    }
 }
index 54696a83d12a0936d5fa7300c98c5d963f6231f4..b725d6c74afca7914d62fb38909fb1a85c7e4209 100644 (file)
@@ -43,6 +43,8 @@ importJava "org.simantics.db.Statement" where
     @JavaName getObject
     objectOf :: Statement -> Resource
     
+    isAsserted :: Statement -> Resource -> <ReadGraph> Boolean
+    
 importJava "org.simantics.db.ReadGraph" where
     "Converts an absolute URI to a resource or returns `Nothing` if there is no such resource."
     @JavaName getPossibleResource
@@ -85,6 +87,9 @@ importJava "org.simantics.db.ReadGraph" where
     @JavaName getSingleStatement
     singleStatement :: Resource -> Resource -> <ReadGraph> Statement
 
+    @JavaName getPossibleStatement
+    possibleStatement :: Resource -> Resource -> <ReadGraph> Maybe Statement
+
     @JavaName getRelatedVariantValue
     relatedVariantValue :: Resource -> Resource -> <ReadGraph> Variant
 
index 1def7102cd72382f27baa20bc058b219048f80f8..a8ffd13db76dedbe5ff5093e5e9ee722a96c7aea 100644 (file)
@@ -90,6 +90,10 @@ importJava "org.simantics.db.layer0.function.All" where
 importJava "org.simantics.db.layer0.variable.VariableMap" where
     data VariableMap
 
+importJava "org.simantics.db.layer0.variable.ResourceCollectionVariableMap" where
+    @JavaName "<init>"
+    createVariableMap :: [Resource] -> VariableMap
+
 importJava "org.simantics.db.layer0.variable.ValueAccessor" where
     data ValueAccessor
 
index be7fb90e06e7f7517486275bdfc7614b79a3551c..19e51a0d5836d23cb2447daabdb1d2093e6d093a 100644 (file)
@@ -27,6 +27,19 @@ iterB f it = loop ()
              else False
         else True
 
+@inline
+filter :: (a -> <e> Boolean) -> T a -> <Proc,e> ()
+filter f it = loop ()
+  where
+    loop _ = 
+        if hasNext it
+        then do
+            if f (next it)
+            then ()
+            else remove it
+            loop ()
+        else ()
+
 @inline
 mapFirst :: (a -> <e> Maybe b) -> T a -> <Proc,e> Maybe b
 mapFirst f it = loop ()
index 9f543101fd50ca8d9555f15118327bf51c72e36d..3e280d6b5ca4758d8a99f864419ec60d731a793e 100644 (file)
@@ -80,3 +80,6 @@ concatMap f s = result
 
 all :: (a -> <e> Boolean) -> T a -> <e,Proc> Boolean
 all f s = Iterator.iterB f (iterator s) 
+
+filterInPlace :: (a -> <e> Boolean) -> T a -> <e,Proc> ()
+filterInPlace p s = Iterator.filter p (iterator s) 
index 33b5fc7e998fa150536ffebca29295bd08cf9f3c..c37a9421f53bacb3f4c310381b160e7716d32727 100644 (file)
@@ -36,6 +36,7 @@ public class SCLInfo {
         "forall",
         "rule",
         "ruleset",
+        "constraint",
         "extends",
         "by",
         "select",
index 6f657b35134859abc3b6285c468e906047fae908..4c3bf1a2c9df1495da8bc101922c957f6fea9003 100644 (file)
@@ -1,8 +1,8 @@
 package org.simantics.scl.ui.modulebrowser;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.Map.Entry;
 
 import gnu.trove.map.hash.THashMap;
 
@@ -44,10 +44,16 @@ public class ModuleNameTreeEntry implements Comparable<ModuleNameTreeEntry> {
         return entry;
     }
     
-    public Collection<ModuleNameTreeEntry> children() {
-        ArrayList<ModuleNameTreeEntry> children = new ArrayList<ModuleNameTreeEntry>(childMap.values());
-        Collections.sort(children);
-        return children;
+    public Object[] children() {
+        Object[] result = childMap.values().toArray();
+        Arrays.sort(result);
+        return result;
+    }
+
+    public void clearModuleFlags() {
+        isModule = false;
+        for(ModuleNameTreeEntry child : childMap.values())
+            child.clearModuleFlags();
     }
 
     @Override
@@ -55,8 +61,13 @@ public class ModuleNameTreeEntry implements Comparable<ModuleNameTreeEntry> {
         return name.compareTo(o.name);
     }
     
-    @Override
-    public String toString() {
-        return name;
+    public boolean prune() {
+        Iterator<ModuleNameTreeEntry> it = childMap.values().iterator();
+        while(it.hasNext()) {
+            ModuleNameTreeEntry entry = it.next();
+            if(!entry.prune())
+                it.remove();
+        }
+        return isModule || !childMap.isEmpty();
     }
 }
index acaffd0f565103cd2301e006794f84304961a574..8355c6dd3a6a642703ebd91b952bb76838593fe6 100644 (file)
@@ -1,75 +1,28 @@
 package org.simantics.scl.ui.modulebrowser;
 
-import java.util.Collection;
-
-import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.widgets.Composite;
 import org.simantics.scl.compiler.module.repository.ModuleRepository;
 
 public class SCLModuleTree extends TreeViewer {
-
-    private final ModuleRepository repository;
     
-    
-    private ITreeContentProvider contentProvider = new ITreeContentProvider() {
-        ModuleNameTreeEntry rootEntry;
-        
-        @Override
-        public void dispose() {
-        }
-
-        @Override
-        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-            if(newInput != null)
-                this.rootEntry = createModuleTreeEntry((Collection<String>)newInput);
-        }
-
-        @Override
-        public Object[] getElements(Object inputElement) {
-            if(rootEntry == null)
-                return new Object[0];
-            return rootEntry.children().toArray();
-        }
-
-        @Override
-        public Object[] getChildren(Object parentElement) {
-            return ((ModuleNameTreeEntry)parentElement).children().toArray();
-        }
-
-        @Override
-        public Object getParent(Object element) {
-            return ((ModuleNameTreeEntry)element).parent;
-        }
-
-        @Override
-        public boolean hasChildren(Object element) {
-            return !((ModuleNameTreeEntry)element).childMap.isEmpty();
-        }
-    };
-    
-    private LabelProvider labelProvider = new LabelProvider();
+    private LabelProvider labelProvider = new SCLModuleTreeLabelProvider();
+    private SCLModuleTreeContentProvider contentProvider;
     
     public SCLModuleTree(Composite parent, int style, ModuleRepository repository) {
         super(parent, style);
-        this.repository = repository;
+        this.contentProvider = new SCLModuleTreeContentProvider();
+        setUseHashlookup(true);
         setLabelProvider(labelProvider);
         setContentProvider(contentProvider);
         setAutoExpandLevel(1);
-        recalculateInput();
-    }
-
-    private static ModuleNameTreeEntry createModuleTreeEntry(Collection<String> names) {
-        ModuleNameTreeEntry root = new ModuleNameTreeEntry(null, "", "");
-        for(String name : names)
-            root.addModule(name);
-        return root;
+        setInput(repository);
     }
 
     public void recalculateInput() {
-        setInput(repository.getSourceRepository().getModuleNames());
+        contentProvider.update();
+        refresh();
     }
 
 }
diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTreeContentProvider.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTreeContentProvider.java
new file mode 100644 (file)
index 0000000..d73639c
--- /dev/null
@@ -0,0 +1,54 @@
+package org.simantics.scl.ui.modulebrowser;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.simantics.scl.compiler.module.repository.ModuleRepository;
+
+public class SCLModuleTreeContentProvider implements ITreeContentProvider {
+    private ModuleRepository repository;
+    private final ModuleNameTreeEntry rootEntry = new ModuleNameTreeEntry(null, "", "");
+    
+    public void update() {
+        rootEntry.clearModuleFlags();
+        if(repository != null) {
+            for(String moduleName : repository.getSourceRepository().getModuleNames()) {
+                rootEntry.addModule(moduleName);
+            }
+        }
+        rootEntry.prune();
+    }
+
+    @Override
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+        this.repository = (ModuleRepository)newInput;
+        update();
+    }
+
+    @Override
+    public Object[] getElements(Object inputElement) {
+        return rootEntry.children();
+    }
+
+    @Override
+    public Object[] getChildren(Object parentElement) {
+        ModuleNameTreeEntry entry = (ModuleNameTreeEntry)parentElement;
+        return entry.children();
+    }
+
+    @Override
+    public Object getParent(Object element) {
+        ModuleNameTreeEntry entry = (ModuleNameTreeEntry)element;
+        return entry.parent;
+    }
+
+    @Override
+    public boolean hasChildren(Object element) {
+        ModuleNameTreeEntry entry = (ModuleNameTreeEntry)element;
+        return !entry.childMap.isEmpty();
+    }
+
+    @Override
+    public void dispose() {
+    }
+
+}
diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTreeLabelProvider.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/modulebrowser/SCLModuleTreeLabelProvider.java
new file mode 100644 (file)
index 0000000..057cd68
--- /dev/null
@@ -0,0 +1,11 @@
+package org.simantics.scl.ui.modulebrowser;
+
+import org.eclipse.jface.viewers.LabelProvider;
+
+public class SCLModuleTreeLabelProvider extends LabelProvider {
+    @Override
+    public String getText(Object element) {
+        ModuleNameTreeEntry entry = (ModuleNameTreeEntry)element;
+        return entry.name;
+    }
+}
index fb80d07605493f42119f05af20f38d5d8ae766fa..baf3b83de6873a371a5dddc669c9199f7a0f1194 100644 (file)
@@ -47,7 +47,6 @@ public class TreeTableCell extends TableCell implements ITreeTableCell {
                        String style = "";
                        int size = 12;
                        for(FontData d : descriptor.getFontData()) {
-                               System.err.println("data: " + d);
                                family = d.getName();
                                if((d.getStyle() & SWT.ITALIC) != 0) style += "Italic";
                                if((d.getStyle() & SWT.BOLD) != 0) style += "Bold";
index 603c6834cbb4d9e01054673d328e3550899fe60e..c5bc965b573d312b50c1779bdc05ebdb63b0e7dc 100644 (file)
@@ -13,7 +13,7 @@
 <feature
       id="org.simantics.sdk"
       label="Simantics SDK"
-      version="1.29.0"
+      version="1.30.0"
       provider-name="VTT Technical Research Centre of Finland">
 
    <description url="http://www.example.com/description">
index 6f0fd975306c2bdf486efac5ef01c1ca685c0247..df0f9d70f5cc3da78118f903ebd3e552e905e192 100644 (file)
@@ -396,15 +396,39 @@ the version numbers in target name and <code>org.simantics.sdk.feature.group</co
 </code></pre>
 </li>
 <li>
-<p>Edit version number of `org.simantics.sdk` feature in `features/org.simantics.sdk.feature/feature.xml` to `x.y.z[.w]`.</p>
-<pre><code>
-&lt;feature
+<p>Edit version number of <code>org.simantics.sdk</code> feature in <code>features/org.simantics.sdk.feature/feature.xml</code> to <code>x.y.z[.w]</code>.</p>
+<pre><code>&lt;feature
       id=&quot;org.simantics.sdk&quot;
       label=&quot;Simantics SDK&quot;
       version=&quot;x.y.z&quot;
       provider-name=&quot;VTT Technical Research Centre of Finland&quot;&gt;
 </code></pre>
-<p>Now commit and push the changes to the release branch.</p>
+<p>An example of these changes can be seen in <a href="https://www.simantics.org:8088/r/gitweb?p=simantics/platform.git;a=commit;h=bab5c9bd68277c76dc5c20bc7a60a9896cbd1540">gitweb</a>.</p>
+</li>
+<li>
+<p>Ensure that Redmine has a release engineering issue for the branched release, such as <a href="https://www.simantics.org/redmine/issues/7263">Simantics 1.30.0 release engineering</a>. Make a copy of the previous release issue to create the new one. Include link to original issue while copying.</p>
+</li>
+<li>
+<p>Commit the changes made</p>
+<pre><code> git commit -a
+</code></pre>
+<p>with the commit message</p>
+<pre><code> Configured release/x.y.z[.w] branch for SDK builds.
+
+ refs #xxxx
+</code></pre>
+<p>where <code>#xxxx</code> is the number of the x.y.z[.w] release engineering issue and push them to remote</p>
+<pre><code> git push origin release/x.y.z[.w]
+</code></pre>
+</li>
+<li>
+<p>If you are branching from <code>master</code>, bump the revision of master right now to start the next release cycle in master.
+An example of these changes can be seen in <a href="https://www.simantics.org:8088/r/gitweb?p=simantics/platform.git;a=commitdiff;h=ae93c9930c6345c32219e6845b9e72e9d9d2d28c">gitweb</a>.</p>
+<p>Commit the changes with the following commit message</p>
+<pre><code>Bumped master target and org.simantics.sdk feature versions to x.y.z[.w].
+refs #yyyy
+</code></pre>
+<p>where <code>#yyyy</code> is the number of the next release's release engineering issue.</p>
 </li>
 </ol>
 <h3>Initialize release branch distribution web site</h3>
@@ -481,7 +505,7 @@ is to back up the mysql database backing the wiki. Should the wiki be required
 at a later time for some reason, we'll put the documentation up then in a
 separate Mediawiki installation.</p>
 <ol>
-<li>Dump documentation wiki databases using [dump-wikis.sh](./dump-wikis.sh) script.</li>
+<li>Dump documentation wiki databases using <a href="./dump-wikis.sh">dump-wikis.sh</a> script.</li>
 <li>Put the generated backup x.y.z.tar.gz at /var/backup/simantics-releases/x.y.z/wiki/</li>
 </ol>
 <h2>Compile change log entry</h2>
index 6d55c144db228408b2b2daf2aa1bf96a6b41ade9..b16736e80aeed1e5cef81c33852eed98d0a115ac 100644 (file)
@@ -120,6 +120,34 @@ With service releases, branch from an existing `release/*` branch instead.
          provider-name="VTT Technical Research Centre of Finland">
    ~~~
 
+   An example of these changes can be seen in [gitweb](https://www.simantics.org:8088/r/gitweb?p=simantics/platform.git;a=commit;h=bab5c9bd68277c76dc5c20bc7a60a9896cbd1540).
+
+4. Ensure that Redmine has a release engineering issue for the branched release, such as [Simantics 1.30.0 release engineering](https://www.simantics.org/redmine/issues/7263). Make a copy of the previous release issue to create the new one. Include link to original issue while copying.
+
+5. Commit the changes made
+
+        git commit -a
+
+   with the commit message
+
+        Configured release/x.y.z[.w] branch for SDK builds.
+
+        refs #xxxx
+
+   where `#xxxx` is the number of the x.y.z[.w] release engineering issue and push them to remote 
+
+        git push origin release/x.y.z[.w]
+
+6. If you are branching from `master`, bump the revision of master right now to start the next release cycle in master.
+   An example of these changes can be seen in [gitweb](https://www.simantics.org:8088/r/gitweb?p=simantics/platform.git;a=commitdiff;h=ae93c9930c6345c32219e6845b9e72e9d9d2d28c).
+
+   Commit the changes with the following commit message
+
+       Bumped master target and org.simantics.sdk feature versions to x.y.z[.w].
+       refs #yyyy
+
+   where `#yyyy` is the number of the next release's release engineering issue.
+
 ### Initialize release branch distribution web site
 
 * Run [SDK/Deploy External Components to Web](https://www.simantics.org/jenkins/job/SDK/job/Deploy%20External%20Components%20to%20Web/) build with parameters:
index 7b97949a6fc62fe6e831898696b8372e89325533..faad6d455bff2bcc19d522781d45ef6bdb8c053b 100644 (file)
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde version="3.8"?>
-<target name="Simantics 1.29.0" sequenceNumber="21">
+<target name="Simantics 1.30.0" sequenceNumber="22">
 <locations>
 <location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.simantics.sdk.feature.group" version="1.29.0"/>
-<unit id="org.simantics.sdk.source.feature.group" version="1.29.0"/>
+<unit id="org.simantics.sdk.feature.group" version="1.30.0"/>
+<unit id="org.simantics.sdk.source.feature.group" version="1.30.0"/>
 <repository location="http://www.simantics.org/download/master/sdk"/>
 </location>
 <location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
index b3d1dc628b9bcc7f5dbd38bb934a5b9a34681711..a72cb5e12af374e2baae37acce5d31dbca24d048 100644 (file)
@@ -2,7 +2,7 @@
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <artifactId>org.simantics.sdk.repository</artifactId>
-       <version>1.29.0-SNAPSHOT</version>
+       <version>1.30.0-SNAPSHOT</version>
        <packaging>eclipse-repository</packaging>
 
        <parent>
index 1c0100425e72fa412154edf0addace0e204202c0..769a1bde952daaa9de2d5f25d4b1d6c1b6f866bf 100644 (file)
@@ -140,6 +140,7 @@ public class ModuleRegressionTests extends TestBase {
     @Test public void LocalDefinitions4() { test(); }
     @Test public void LocalDefinitions5() { test(); }
     @Test public void Logger() { test(); }
+    @Test public void LP() { test(); }
     @Test public void Macros1() { test(); }
     @Test public void Macros2() { test(); }
     @Test public void Macros4() { test(); }
@@ -223,6 +224,7 @@ public class ModuleRegressionTests extends TestBase {
     @Test public void SinConst1() { test(); }
     @Test public void Sort() { test(); }
     @Test public void Sort2() { test(); }
+    @Test public void SpecConstr1() { test(); }  
     @Test public void SSATypingBug() { test(); }
     @Test public void StreamFusion() { test(); }
     @Test public void StringEscape() { test(); }
index 612a3ab1e82da58ef28b4294e333e434b75d76bc..ede9d008b9d8866a84e54163bfd5b97377537fa1 100644 (file)
@@ -13,16 +13,13 @@ public class UnimplementedTests extends TestBase {
     @Test public void FunctionalDependencies2() { test(); }  
     @Test public void InlineLoop() { test(); }
     @Test public void InstanceTypeVariables() { test(); }
-    @Test public void LP() { test(); }
     @Test public void Macros3() { test(); }
     @Test public void MissingTypeParameter() { test(); }
     @Test(timeout=100L) public void RecursiveValues() { test(); }
     
     @Test public void Set1() { test(); }
     @Test public void Signals() { test(); }
-    @Test public void SpecConstr1() { test(); }  
     @Test public void StackTrace() { test(); }
-    @Test public void StringInterpolation2() { test(); }
     @Test public void Timing() { test(); }
     
 }