Giter Club home page Giter Club logo

iets3.opensource's Introduction

iets3.opensource

Build instructions

Using Gradle

If you just want to build the project, no prerequisites are required. Just run ./gradlew build from the checkout directory. This will download required version of the mbeddr platform language library from the itemis Nexus repository. When the build has finished, you can open the project in MPS from the folder <iets3.opensource>/code/languages/org.iets3.opensource

To publish this project's artifacts to the Maven local repository run ./gradlew publishToMavenLocal.

If you want to use a custom version of mbeddr with Gradle, publish its artifacts to the local Maven repository (consult mbeddr documentation).

Supported MPS versions

In general, we support the latest MPS version on master plus the three previous versions on maintenance branches.

What does support mean in this case?

We take care of porting changes done in older supported MPS versions to the newer ones. For details see wiki.

What MPS versions are currently supported?

Documentation

Community

Slack

Ask your questions about KernelF and talk to other users and authors of the IETS3 language library on the public Slack channel

Opening the project in MPS

Open the folder [ROOT]/code/languages/org.iets3.opensource in MPS where ROOT is the root folder of this project.

Project Structure

The project is separated into the following virtual packages:

_build

Name Description
build-allScripts.xml This ant script generates the overall build script that also contains the script for running the tests from the command line.
prebuild.xml This ant script contains the analysis language, core base, and expressions base.
build-languages.xml This ant script contains all languages and generates the finished zip file.
build-distro.xml This ant script combines the files from the mbeddr platform with the files from the previous script.
build-tests.xml This ant script contains all the test languages and solutions and also runs the KernelF generated tests as part of the build. This is achieved by including an instance of RunKernelFGeneratedTests.

analysis

Name Description
org.iets3.analysis.base  This language contains basic concepts and interfaces and a plugin solution related to solvers.

assessment

Name Description
org.iets3.core.assessment It contains an AssessmentQuery to find untraced elements. It can be used inside an instance of Assessment inside an AssessmentContainer. It also contains a generic trace query to find traced elements.

comp

Name Description
org.iets3.components.core.interpreter It contains the interpreter for the components language.
org.iets3.components.core.sandbox It is a sandbox for components.
org.iets3.components.plugin It contains a custom project view that displays all the components in the project.
tests.ts.components.core It contains test cases related to the components language.
org.iets3.components.core This languages add support for components. More info: page 24
org.iets3.components.req It adds support for components (alias:components) in requirements.
test.iets3.component.attribute This language adds test attributes for components (see instances in components tests).

core

Name Description
org.iets3.core.plugin It contains a custom project view that displays all nodes related to the specification.
tests.org.iets3.core.comments It contains tests for comments.
org.iets3.core.attributes It contains the language that implements attributes for components.
org.iets3.core.base This language contains basic concepts and interfaces and a plugin solution related to this project.
org.iets3.core.users This language allows specifying users and user directories. Not used anywhere.

expr

The package genjava contains interpreters for generating Java code from KernelF. It also included an example for generating Java code from state machines.

Core language constructs (lang-core)

This package contains the following parts of KernelF (full paper, reference) including runtime solution and interpreters:

Package Name Description
org.iets3.core.expr.base KernelF base language reference
org.iets3.core.expr.collections support for lists, maps, sets page 5
org.iets3.core.expr.lambda anonymous functions lambda) page 6
org.iets3.core.expr.path path expressions (record) page 61
org.iets3.core.expr.repl read–eval–print loop page 12
org.iets3.core.expr.simpleTypes simple types (bool, numeric, string) page 2
org.iets3.core.expr.simpleTypes.tests simple type tests It contains tests for simple types.
org.iets3.core.expr.tests expression test language It implements a language for testing expressions.
org.iets3.core.expr.toplevel top level expressions It contains expressions that can be used at the top level (records, functions, constants etc). A top level can be for example a Library
org.iets3.core.expr.tracing tracing It is a utility language that helps with tracing.

Advanced language constructs (lang-advanced)

This package contains the following parts of KernelF (full paper, reference) including runtime solution and interpreters:

Package Name Description
org.iets3.core.expr.adt algebraic data types(ADT) tests: #1, #2
org.iets3.core.expr.data data tables tests: #1, #2
org.iets3.core.expr.dataflow data flow tests: #1
org.iets3.core.expr.datetime date type page 19
org.iets3.core.expr.doc expression documentation It contains additional top level expressions for documentation purposes.
org.iets3.core.expr.lookup lookup table It implements a lookup table that supports a lookup method that returns the cell content at the specified index. example: doc page 17
org.iets3.core.expr.math math expressions example: page 6, tests: #1
org.iets3.core.expr.messages messages tests: #1
org.iets3.core.expr.metafunction meta functions page 28
org.iets3.core.expr.natlang natural language expressions tests: #1
org.iets3.core.expr.query query expressions It is a simple sql like querying language; tests: #1
org.iets3.core.expr.temporal temporal type page 20
org.iets3.core.expr.typetags type tags page 67
org.iets3.core.expr.util.dectab binary decision table tests: #1, #2, #3
org.iets3.core.expr.util.dectree decision tree tests: #1
org.iets3.core.expr.util.multidectab multi-criteria decision table tests: #1
org.iets3.core.expr.util.range ranges

Stateful language constructs (lang-stateful)

This package contains the following parts of KernelF (full paper, reference) including runtime solution and interpreters:

Package Name Description
org.iets3.core.expr.mutable mutable expressions page 9
org.iets3.core.expr.process processes including multi-party-boolean-decisions page 27
org.iets3.core.expr.statemachines state machines page 10

Plugins

Package Description
org.iets3.core.expr.doc.plugin It implements a custom project view for bookmarks(IBookmark).
org.iets3.core.expr.lambda.plugin It contains refactoring actions for lambda expressions.
org.iets3.core.expr.plugin It contains various actions related to the KernelF language.
org.iets3.core.expr.repl.plugin It contains various actions related to REPL.

Tests

The tests are grouped into the playground, test suites and nodes test cases. The language org.iets3.core.expr.testExecution contains a configuration for the test execution mode (generator, interpreter).

req

This package includes all things related to requirement documents.

Package Description
org.iets3.req.plugin It contains requirement-related actions, projection modes and a custom project view that displays all requirements in the project.
org.iets3.req.glossary This languages allows to define terms in glossaries which can be referenced in requirement documents.
org.iets3.req.req.core This language implements requirements documents. A new document can be created with the root node RequirementsChunk.

trace

This package includes all things related to tracing. More info: page 27 debugger

Package Description
test.iets3.core.tracequery It contains trace tests.
org.iets3.core.trace It implements trace attributes (can be for example used in components).
org.iets3.core.test It is a language for trace testing.

Devkits

The following devkits are available:

Package Contents
org.iets3.req requirements
org.iets3.core.expr.core.devkit core expressions + interpreters
org.iets3.core.expr.advanced.devkit core expressions + interpreters
org.iets3.core.expr.stateful.devkit stateful expressions + interpreters
org.iets3.core.expr.genjava.core.devkit java generation of core expressions
org.iets3.core.expr.genjava.advanced.devkit java generation of advanced expressions
org.iets3.core.expr.genjava.stateMachineExample.devkit java generation of state machine example
org.iets3.core.expr.genall.core.devkit all core generation devkits
org.iets3.core.expr.genall.advanced.devkit all advanced generation devkits

iets3.opensource's People

Contributors

alebugariu avatar alexanderpann avatar alexeiq avatar arimer avatar baran-goru avatar bj2015 avatar bkolb avatar cdelabou avatar coolya avatar dbinkele avatar domenikp avatar ftomassetti avatar fvollmer avatar github-actions[bot] avatar heikobecker avatar itnef avatar joao-silveira avatar juergenhaug avatar kbirken avatar levilucio avatar lhartl avatar markusvoelter avatar mgronover avatar pavel-nedvedicky avatar psuzzi avatar sergej-koscejev avatar slisson avatar stephaneberle9 avatar svott7 avatar wsafonov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iets3.opensource's Issues

Dashboard States Visualisation

This is required to give the user a visual representation of the states that are already true and the ones that are not true (current state in which the user is) ... This could be achieved by having a table with all states listed and greens represent the states already satisfied and red ones that are yet to be satisfied...

Fix ambiguous entries normal templates

"When the <Ctrl. name> shall " + parameterNode.name presentation is a bit ambiguous as the response comes before the system name in the requirement writing

Bug in inference of the MinusExpression on numbers

We have a case in which we think the inferred type is wrong.
When subtracting a value two values:

  • a: number[1|20]
  • b: number[1|10]

The inferred type is: number[0|10]{0}

I would expect it to number[-9|19]{0}

I think the error should be corrected in r:050f6d52-a81b-4b31-9a1c-531c1a04708e/5115872837157441716

Here:

node<NumberType> left = leftOperandType : NumberType; 
node<NumberType> right = rightOperandType : NumberType; 
node<NumberType> res = new node<NumberType>(); 
res.setRange(InfHelper.sub(left.lowerBound(), right.lowerBound(), false), InfHelper.sub(left.upperBound(), right.upperBound(), false)); 
res.setMaxPrecision(left, right);

Because you want to subtract the left.lowerBound and the right.upperBound to get the lower bound, and to get the resulting upperbound you should subtract the left.upperBound and the right.lowerBound

analysis of models of the flow language

The flow language can be analysed for overlapping conditions using Z3. Moreover, we can define semantic implications between properties or states, such that we know some more information about the flow. This information can be used for example to prevent more than one state being active simultaneously.

Sort out the table intervals

At present the table intervals (both increasing/decreasing) have no particular order of values. But we would like to have values either in ascending or descending order.

Requirement:
The user can sort the intervals (increasing/decreasing) based on his/her choice of either by selecting the choice

Possible solution (tentative)

  1. Radio button with action implemented
  2. checkbox with button to implement the action

InfHelper.div(..., precision, ...) should call BigDecimal#divide() with a rounding mode

Otherwise the following exception occurs:

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
	at java.math.BigDecimal.divide(BigDecimal.java:1690)
	at java.math.BigDecimal.divide(BigDecimal.java:1723)
	at org.iets3.core.expr.simpleTypes.plugin.InfHelper.div(InfHelper.java:82)
	at org.iets3.core.expr.simpleTypes.typesystem.TypesystemDescriptor$CustomOverloadedOperationsTypesProvider_d.getOperationType(TypesystemDescriptor.java:248)
	at jetbrains.mps.lang.typesystem.runtime.OverloadedOperationsManager.getOperationType(OverloadedOperationsManager.java:86)
	...

and the type of d1 / d2 is not computed properly in NumerTypeCalculation test.

EnumLiteralRef should be statically evaluatable

This:

public boolean isStaticallyEvaluatable() 
  overrides Expression.isStaticallyEvaluatable { 
  false; 
}

Should be:

public boolean isStaticallyEvaluatable() 
  overrides Expression.isStaticallyEvaluatable { 
  true; 
}

Create A Table Language for Diehl Requirements Analysis

Create a table language in MPS

  • Design the language
  • Develop/Implement the language
  • Create an editor for the table language
  • The visual editor should be as closely in visualization to the real table specified in the diehl requirement analysis document

Gradle and Readme

The Readme refers to the ant script but a gradle script is present in the root of the project.
What is its intended usage? Should we explain what it is in the Readme?

Table Analysis - Continuous and No Overlaps

For an instance of the table Check for, if there

  • are continuous intervals/values and there are no holes or values missing
  • is no overlaps between the intervals/values. In case there is an overlap then the table cannot be represented as a function.

Type synthesis

Structured type created on the fly based on a "projection" of data. Like Linq. H customer.

Having the precision being represented as a Constraint

I think it would be useful to have Type.applicableConstraints() to include a Constraint representing the precision, as we have for the lower and upper bounds of Number. To me it seems a constraint because it limits the acceptable values that can be assigned to an instance of that type.

For example if I have number{2} I should not assign to it 1.234

Triggering checks based on localized changes

The main idea is to trigger the property based on the localized changes made during composition of the model. In the initial attempt, there will be an appropriate change listener added to the model. The change listener will listen to the nodes of the concepts. The output will be a model-based change management system that will minimize the property execution for the flow dashboard.

Concrete TraceKind(s) do not work any more

RealizesKind + DefaultTrace are not working properly. Scope calculation throws an exception:

'org.iets3.core.trace.test.structure.RealizesKind BHDescriptor'. [node r:578e0285-cf65-4b20-9ddc-fab98242f28a(iets3Components.mdl)/6819545094560286009] jetbrains.mps.core.aspects.behaviour.api.BHMethodNotFoundException: The method 'J(class java.lang.Object)::traceableElements([])V[PUB]' could not be found within the 'org.iets3.core.trace.test.structure.RealizesKind BHDescriptor'. at jetbrains.mps.core.aspects.behaviour.BaseBHDescriptor.findDescriptorByVirtualMethod(BaseBHDescriptor.java:372) at jetbrains.mps.core.aspects.behaviour.BaseBHDescriptor.invokeVirtual(BaseBHDescriptor.java:347) at jetbrains.mps.core.aspects.behaviour.BaseBHDescriptor.invoke(BaseBHDescriptor.java:218) at jetbrains.mps.core.aspects.behaviour.SMethodImpl.invoke0(SMethodImpl.java:155) at jetbrains.mps.core.aspects.behaviour.SMethodImpl.invoke(SMethodImpl.java:130) at org.iets3.core.trace.constraints.ITraceTargetProvider_Constraints$1$1.createScope(ITraceTargetProvider_Constraints.java:49) at jetbrains.mps.smodel.constraints.ReferenceDescriptor$OkReferenceDescriptor.getScope(ReferenceDescriptor.java:155) at jetbrains.mps.lang.editor.menus.substitute.SimpleConceptSubstituteMenuPart.createSmartSubstituteMenuItems(SimpleConceptSubstituteMenuPart.java:149) at jetbrains.mps.lang.editor.menus.substitute.SimpleConceptSubstituteMenuPart.createSmartItemsItems(SimpleConceptSubstituteMenuPart.java:77) at jetbrains.mps.lang.editor.menus.substitute.SimpleConceptSubstituteMenuPart.createItems(SimpleConceptSubstituteMenuPart.java:57) at jetbrains.mps.lang.editor.menus.substitute.SimpleConceptSubstituteMenuPart.createItems(SimpleConceptSubstituteMenuPart.java:42) at jetbrains.mps.lang.editor.menus.ConstraintsFilteringMenuPartDecorator.createItems(ConstraintsFilteringMenuPartDecorator.java:45) at jetbrains.mps.lang.editor.menus.CompositeMenuPart.createItems(CompositeMenuPart.java:36) at jetbrains.mps.lang.editor.menus.substitute.DefaultConceptSubstituteMenuPart.createItems(DefaultConceptSubstituteMenuPart.java:49) at jetbrains.mps.lang.editor.menus.substitute.DefaultConceptSubstituteMenuPart.createItems(DefaultConceptSubstituteMenuPart.java:33) at jetbrains.mps.lang.editor.menus.CompositeMenuPart.createItems(CompositeMenuPart.java:36) at jetbrains.mps.nodeEditor.menus.substitute.SubstituteMenuBase.createMenuItems(SubstituteMenuBase.java:44) at jetbrains.mps.nodeEditor.menus.substitute.SubstituteMenuBase.createMenuItems(SubstituteMenuBase.java:30) at jetbrains.mps.nodeEditor.menus.substitute.DefaultSubstituteMenuItemFactory.createItems(DefaultSubstituteMenuItemFactory.java:55) at jetbrains.mps.nodeEditor.menus.substitute.DefaultSubstituteMenuItemFactory.createItems(DefaultSubstituteMenuItemFactory.java:34) at jetbrains.mps.nodeEditor.menus.RecursionSafeMenuItemFactory.createItems(RecursionSafeMenuItemFactory.java:51) at jetbrains.mps.nodeEditor.menus.substitute.DefaultSubstituteMenuContext.createItems(DefaultSubstituteMenuContext.java:134) at jetbrains.mps.lang.editor.menus.substitute.DefaultConceptMenusSubstituteMenuPart.createItemsForConcept(DefaultConceptMenusSubstituteMenuPart.java:44) at jetbrains.mps.lang.editor.menus.substitute.DefaultConceptMenusSubstituteMenuPart.createItemsForConcept(DefaultConceptMenusSubstituteMenuPart.java:31) at jetbrains.mps.lang.editor.menus.ConceptMenusPart.createItems(ConceptMenusPart.java:35) at jetbrains.mps.lang.editor.menus.CompositeMenuPart.createItems(CompositeMenuPart.java:36) at jetbrains.mps.lang.editor.menus.substitute.DefaultConceptSubstituteMenuPart.createItems(DefaultConceptSubstituteMenuPart.java:49) at jetbrains.mps.lang.editor.menus.substitute.DefaultConceptSubstituteMenuPart.createItems(DefaultConceptSubstituteMenuPart.java:33) at jetbrains.mps.lang.editor.menus.CompositeMenuPart.createItems(CompositeMenuPart.java:36) at jetbrains.mps.nodeEditor.menus.substitute.SubstituteMenuBase.createMenuItems(SubstituteMenuBase.java:44) at jetbrains.mps.nodeEditor.menus.substitute.SubstituteMenuBase.createMenuItems(SubstituteMenuBase.java:30) at jetbrains.mps.nodeEditor.menus.substitute.DefaultSubstituteMenuItemFactory.createItems(DefaultSubstituteMenuItemFactory.java:55) at jetbrains.mps.nodeEditor.menus.substitute.DefaultSubstituteMenuItemFactory.createItems(DefaultSubstituteMenuItemFactory.java:34) at jetbrains.mps.nodeEditor.menus.RecursionSafeMenuItemFactory.createItems(RecursionSafeMenuItemFactory.java:51) at jetbrains.mps.nodeEditor.menus.substitute.DefaultSubstituteMenuContext.createItems(DefaultSubstituteMenuContext.java:134) at jetbrains.mps.lang.editor.menus.transformation.SubstituteItemsCollector.collect(SubstituteItemsCollector.java:62) at jetbrains.mps.lang.editor.menus.transformation.IncludeSubstituteMenuTransformationMenuPart.createItems(IncludeSubstituteMenuTransformationMenuPart.java:42) at jetbrains.mps.lang.editor.menus.transformation.IncludeSubstituteMenuTransformationMenuPart.createItems(IncludeSubstituteMenuTransformationMenuPart.java:32) at jetbrains.mps.lang.editor.menus.CompositeMenuPart.createItems(CompositeMenuPart.java:36) at jetbrains.mps.nodeEditor.menus.transformation.TransformationMenuBase.createMenuItems(TransformationMenuBase.java:43) at jetbrains.mps.nodeEditor.menus.transformation.TransformationMenuBase.createMenuItems(TransformationMenuBase.java:27) at jetbrains.mps.nodeEditor.menus.transformation.DefaultTransformationMenuItemFactory.createItems(DefaultTransformationMenuItemFactory.java:56) at jetbrains.mps.nodeEditor.menus.transformation.DefaultTransformationMenuItemFactory.createItems(DefaultTransformationMenuItemFactory.java:35) at jetbrains.mps.nodeEditor.menus.RecursionSafeMenuItemFactory.createItems(RecursionSafeMenuItemFactory.java:51) at jetbrains.mps.nodeEditor.menus.transformation.DefaultTransformationMenuContext.createItems(DefaultTransformationMenuContext.java:182) at jetbrains.mps.lang.editor.menus.transformation.DefaultConceptMenusTransformationMenuPart.createItemsForConcept(DefaultConceptMenusTransformationMenuPart.java:43) at jetbrains.mps.lang.editor.menus.transformation.DefaultConceptMenusTransformationMenuPart.createItemsForConcept(DefaultConceptMenusTransformationMenuPart.java:29) at jetbrains.mps.lang.editor.menus.ConceptMenusPart.createItems(ConceptMenusPart.java:35) at jetbrains.mps.lang.editor.menus.CompositeMenuPart.createItems(CompositeMenuPart.java:36) at jetbrains.mps.nodeEditor.menus.transformation.TransformationMenuBase.createMenuItems(TransformationMenuBase.java:43) at jetbrains.mps.nodeEditor.menus.transformation.TransformationMenuBase.createMenuItems(TransformationMenuBase.java:27) at jetbrains.mps.nodeEditor.menus.transformation.DefaultTransformationMenuItemFactory.createItems(DefaultTransformationMenuItemFactory.java:56) at jetbrains.mps.nodeEditor.menus.transformation.DefaultTransformationMenuItemFactory.createItems(DefaultTransformationMenuItemFactory.java:35) at jetbrains.mps.nodeEditor.menus.RecursionSafeMenuItemFactory.createItems(RecursionSafeMenuItemFactory.java:51) at jetbrains.mps.nodeEditor.menus.transformation.DefaultTransformationMenuContext.createItems(DefaultTransformationMenuContext.java:182) at jetbrains.mps.lang.editor.menus.transformation.DefaultConceptMenusTransformationMenuPart.createItemsForConcept(DefaultConceptMenusTransformationMenuPart.java:43) at jetbrains.mps.lang.editor.menus.transformation.DefaultConceptMenusTransformationMenuPart.createItemsForConcept(DefaultConceptMenusTransformationMenuPart.java:29) at jetbrains.mps.lang.editor.menus.ConceptMenusPart.createItems(ConceptMenusPart.java:35) at jetbrains.mps.lang.editor.menus.CompositeMenuPart.createItems(CompositeMenuPart.java:36) at jetbrains.mps.nodeEditor.menus.transformation.TransformationMenuBase.createMenuItems(TransformationMenuBase.java:43) at jetbrains.mps.nodeEditor.menus.transformation.TransformationMenuBase.createMenuItems(TransformationMenuBase.java:27) at jetbrains.mps.nodeEditor.menus.transformation.DefaultTransformationMenuItemFactory.createItems(DefaultTransformationMenuItemFactory.java:56) at jetbrains.mps.nodeEditor.menus.transformation.DefaultTransformationMenuItemFactory.createItems(DefaultTransformationMenuItemFactory.java:35) at jetbrains.mps.nodeEditor.menus.RecursionSafeMenuItemFactory.createItems(RecursionSafeMenuItemFactory.java:51) at jetbrains.mps.nodeEditor.menus.transformation.DefaultTransformationMenuContext.createItems(DefaultTransformationMenuContext.java:182) at jetbrains.mps.nodeEditor.menus.transformation.DefaultTransformationMenuContext.createItemsWithFallback(DefaultTransformationMenuContext.java:200) at jetbrains.mps.nodeEditor.menus.MenuUtil.createMenu(MenuUtil.java:70) at jetbrains.mps.nodeEditor.cellMenu.AbstractSubstituteInfo.createActions(AbstractSubstituteInfo.java:48) at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo.getActions(AbstractNodeSubstituteInfo.java:179) at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo.getActionsFromCache(AbstractNodeSubstituteInfo.java:220) at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo.access$000(AbstractNodeSubstituteInfo.java:48) at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo$2.compute(AbstractNodeSubstituteInfo.java:158) at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo$2.compute(AbstractNodeSubstituteInfo.java:155) at jetbrains.mps.util.ComputeRunnable.compute(ComputeRunnable.java:32) at jetbrains.mps.util.AbstractComputeRunnable.run(AbstractComputeRunnable.java:27) at jetbrains.mps.smodel.WorkbenchModelAccess.runReadAction(WorkbenchModelAccess.java:100) at jetbrains.mps.smodel.ModelAccessBase.runReadAction(ModelAccessBase.java:53) at jetbrains.mps.smodel.ModelAccessHelper.runReadAction(ModelAccessHelper.java:44) at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo.getMatchingActions(AbstractNodeSubstituteInfo.java:155) at jetbrains.mps.nodeEditor.EditorComponent$32.lambda$compute$0(EditorComponent.java:2575) at jetbrains.mps.typesystem.inference.TypeContextManager$Executor.doExecute(TypeContextManager.java:273) at jetbrains.mps.typesystem.inference.TypeContextManager$Executor.execute(TypeContextManager.java:246) at jetbrains.mps.typesystem.inference.TypeContextManager.runTypeCheckingComputation(TypeContextManager.java:120) at jetbrains.mps.nodeEditor.EditorComponent$32.compute(EditorComponent.java:2572) at jetbrains.mps.nodeEditor.EditorComponent$32.compute(EditorComponent.java:2568) at jetbrains.mps.util.ComputeRunnable.compute(ComputeRunnable.java:32) at jetbrains.mps.util.AbstractComputeRunnable.run(AbstractComputeRunnable.java:27) at jetbrains.mps.smodel.WorkbenchModelAccess.runReadAction(WorkbenchModelAccess.java:100) at jetbrains.mps.smodel.ModelAccessBase.runReadAction(ModelAccessBase.java:53) at jetbrains.mps.nodeEditor.EditorComponent.runRead(EditorComponent.java:2474) at jetbrains.mps.nodeEditor.EditorComponent.getMatchingActions(EditorComponent.java:2568) at jetbrains.mps.nodeEditor.EditorComponent.activateNodeSubstituteChooser(EditorComponent.java:2536) at jetbrains.mps.nodeEditor.EditorComponent.activateNodeSubstituteChooser(EditorComponent.java:2506) at jetbrains.mps.nodeEditor.NodeEditorActions$Complete.execute(NodeEditorActions.java:689) at jetbrains.mps.nodeEditor.actions.ActionHandlerImpl$1.doExecute(ActionHandlerImpl.java:56) at jetbrains.mps.editor.runtime.commands.EditorCommand.run(EditorCommand.java:54) at jetbrains.mps.smodel.WorkbenchModelAccess$CommandRunnable$1.run(WorkbenchModelAccess.java:616) at jetbrains.mps.smodel.WriteActionDispatcher.run(WriteActionDispatcher.java:39) at jetbrains.mps.smodel.WorkbenchModelAccess$3.run(WorkbenchModelAccess.java:139) at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1023) at jetbrains.mps.smodel.WorkbenchModelAccess.runWriteAction(WorkbenchModelAccess.java:148) at jetbrains.mps.smodel.WorkbenchModelAccess$CommandRunnable.run(WorkbenchModelAccess.java:611) at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:149) at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:109) at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:99) at jetbrains.mps.smodel.WorkbenchModelAccess.runWriteActionInCommand(WorkbenchModelAccess.java:424) at jetbrains.mps.smodel.WorkbenchModelAccess.executeCommand(WorkbenchModelAccess.java:387) at jetbrains.mps.project.ProjectModelAccess.executeCommand(ProjectModelAccess.java:43) at jetbrains.mps.nodeEditor.actions.ActionHandlerImpl.executeAction(ActionHandlerImpl.java:53) at jetbrains.mps.nodeEditor.actions.ActionHandlerImpl.executeAction(ActionHandlerImpl.java:43) at jetbrains.mps.nodeEditor.selection.EditorCellSelection.executeAction(EditorCellSelection.java:166) at jetbrains.mps.nodeEditor.selection.EditorCellLabelSelection.executeAction(EditorCellLabelSelection.java:172) at jetbrains.mps.ide.editor.actions.Complete_Action.doExecute(Complete_Action.java:59) at jetbrains.mps.workbench.action.BaseAction$2.run(BaseAction.java:145) at jetbrains.mps.workbench.action.BaseAction.actionPerformed(BaseAction.java:155) at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:215) at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:232) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$1.performAction(IdeKeyEventDispatcher.java:570) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.lambda$processAction$2(IdeKeyEventDispatcher.java:619) at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:193) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:618) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.java:477) at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:211) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:633) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Reference to FlowModel by name

In the Dashboard we need to take a look at the hardcoded reference to the
"FlowModel" model. We should refer to it not by reference but by name,
because it does not exists at the beginning when the dashboard is not
configured yet. I didn't know how to do this immediately, but maybe
Salman does.

Flaky tests

I have run ./gradlew check several times and sometimes I get 0 failures, some other times I get 2 failures

screen shot 2017-03-13 at 09 22 51

I cannot see something obviously wrong with those tests

Having declarative constraints

In my opinion it would be useful to have declarative constraints returned by Type.applicableConstraints(). Currently they return an expression, which I could evaluate but I cannot easily translate in other contexts.

For example I could want to verify that constraint on JS. If the constraint was declarative (e.g., LowerBound(10)) I could do easily.

Scoping Problem in writing new Requirements

When writing new requirements, after the selection of component name, response possibility of other components are also shown. The other components should be filtered so that only the relevant ooptions are shown.

Comparing postive value with negative in diehl table intervals

The problem arises when there is an interval values like we want to input values like To: 5 and From:-6 and constraints are unable to check for 5>-6 (5 greater then -6). We can only check for values that are either both positive or both negative (-5>-6) or (6<5) at present. This should be fixed for the intervals (i.e., both increasing and decreasing)

Create node factory for ParenExpression

If I select an expression and replace it with a ParenExpression (either via the completion menu or by typing '('), the newly created ParenExpression should have the original expression as its child.

This can be done by creating a node factory for the ParenExpression concept.

Document ConstraintAndError

It is not obvious what it does and how to use buildErrorMessage. Should we use to check if there is an error and null means everything is fine?

Perform checks on the table language for analysis

Using Constraints Check for Intervals (To, From) in the Table so that

  • No gaps between intervals
  • Values should not increase and decrease the thresholds set for increasing and decreasing part of the table

An NPE could be due to missing coverage

Note that I am not sure about the origin of this error, this is just a suspicion based on the following:

Caused by: com.mbeddr.mpsutil.interpreter.rt.InterpreterRuntimeException: RuntimeException in ||(left[boolean], right[boolean]) on {EXPRESSION REMOVED}:
null
	at org.iets3.core.expr.simpleTypes.plugin.InterpreterExprSimpleTypesInterpeter$9.evaluateEvaluator(Unknown Source)
	at com.mbeddr.mpsutil.interpreter.rt.InterpreterBase.evaluate(InterpreterBase.java:72)
	... 51 more
Caused by: java.lang.NullPointerException
	... 53 more

I suspect the piece of code corresponding is:

ListSequence.fromList(((List<IEvaluator>) evaluators)).addElement(new ConceptEvaluatorBase(MetaAdapterFactory.getConcept(0xcfaa4966b7d54b69L, 0xb66a309a6e1a7290L, 0x46ff3b3d86cbdcbbL, "org.iets3.core.expr.base.structure.LogicalOrExpression"), true, new TypedChildConstraintImpl(SLinkOperations.findLinkDeclaration(MetaAdapterFactory.getContainmentLink(0xcfaa4966b7d54b69L, 0xb66a309a6e1a7290L, 0x46ff3b3d86c99c15L, 0x46ff3b3d86c99c16L, "left")), SConceptOperations.createNewNode(SNodeOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0x6b277d9ad52d416fL, 0xa2091919bd737f50L, 0x670d5e92f854a617L, "org.iets3.core.expr.simpleTypes.structure.BooleanType").getDeclarationNode()))), new TypedChildConstraintImpl(SLinkOperations.findLinkDeclaration(MetaAdapterFactory.getContainmentLink(0xcfaa4966b7d54b69L, 0xb66a309a6e1a7290L, 0x46ff3b3d86c99c15L, 0x46ff3b3d86c99c18L, "right")), SConceptOperations.createNewNode(SNodeOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0x6b277d9ad52d416fL, 0xa2091919bd737f50L, 0x670d5e92f854a617L, "org.iets3.core.expr.simpleTypes.structure.BooleanType").getDeclarationNode())))) {
      public Object evaluateEvaluator(SNode node, IContext context, ICoverageAnalyzer coverage) {
        try {
          coverage.visitedEvaluator(this);
          coverage.visitedConcept(this.concept);
          return ((Boolean) castUp(context.getRootInterpreter().evaluate(SLinkOperations.getTarget(node, MetaAdapterFactory.getContainmentLink(0xcfaa4966b7d54b69L, 0xb66a309a6e1a7290L, 0x46ff3b3d86c99c15L, 0x46ff3b3d86c99c16L, "left")), context, coverage), Boolean.class)) || ((Boolean) castUp(context.getRootInterpreter().evaluate(SLinkOperations.getTarget(node, MetaAdapterFactory.getContainmentLink(0xcfaa4966b7d54b69L, 0xb66a309a6e1a7290L, 0x46ff3b3d86c99c15L, 0x46ff3b3d86c99c18L, "right")), context, coverage), Boolean.class));
        } catch (InterpreterEscapeException ex) {
          throw ex;
        } catch (RuntimeException ex) {
          throw new InterpreterRuntimeException("||(left[boolean], right[boolean])", node, ex);
        }
      }
      public EvaluatorInfo getInfo() {
        return new EvaluatorInfo("LogicalOrExpression");
      }

      @Override
      public String toString() {
        return "LogicalOrExpression";
      }
    });

It comes from InterpreterExprSimpleTypesInterpeter.

constraints for attribute copy in the flow language

In the scripts written using flow language we need to say not only which attributes need to be copied over when models are potentially created, but also to put some conditions on the copy. This can be achieved by adding arbitrary constraints on the copy using an expression language. This could be done using Markus' expression language.

Exception in org.iets3.core.expr.natlang.constraints.NatLangFunctionArgRef_Constraints

java.lang.IllegalArgumentException: fromIndex(1) > toIndex(0)
    at java.util.SubList.<init>(AbstractList.java:624)
    at java.util.AbstractList.subList(AbstractList.java:484)
    at jetbrains.mps.internal.collections.runtime.ListSequence.tailListSequence(ListSequence.java:38)
    at org.iets3.core.expr.natlang.constraints.NatLangFunctionArgRef_Constraints$1$1.createSearchScopeOrListOfNodes(Unknown Source)
    at jetbrains.mps.smodel.runtime.base.BaseReferenceScopeProvider.createSearchScope(BaseReferenceScopeProvider.java:39)
    at jetbrains.mps.smodel.runtime.base.BaseReferenceScopeProvider.createScope(BaseReferenceScopeProvider.java:59)
    at jetbrains.mps.smodel.constraints.ReferenceDescriptor$OkReferenceDescriptor.getScope(ReferenceDescriptor.java:131)
    at jetbrains.mps.smodel.action.ChildSubstituteActionsHelper.createSmartReferenceActions(ChildSubstituteActionsHelper.java:245)
    at jetbrains.mps.smodel.action.ChildSubstituteActionsHelper.createDefaultSubstituteActions(ChildSubstituteActionsHelper.java:205)
    at jetbrains.mps.smodel.action.ChildSubstituteActionsHelper.createPrimaryChildSubstituteActions(ChildSubstituteActionsHelper.java:185)
    at jetbrains.mps.smodel.action.ChildSubstituteActionsHelper.createActions_internal(ChildSubstituteActionsHelper.java:121)
    at jetbrains.mps.smodel.action.ChildSubstituteActionsHelper.createActions(ChildSubstituteActionsHelper.java:60)
    at jetbrains.mps.smodel.action.ModelActions.createChildNodeSubstituteActions(ModelActions.java:32)
    at jetbrains.mps.nodeEditor.cellMenu.DefaultChildSubstituteInfo.createActions(DefaultChildSubstituteInfo.java:95)
    at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo.getActions(AbstractNodeSubstituteInfo.java:179)
    at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo.getActionsFromCache(AbstractNodeSubstituteInfo.java:220)
    at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo.access$000(AbstractNodeSubstituteInfo.java:48)
    at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo$2.compute(AbstractNodeSubstituteInfo.java:158)
    at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo$2.compute(AbstractNodeSubstituteInfo.java:155)
    at jetbrains.mps.util.ComputeRunnable.compute(ComputeRunnable.java:32)
    at jetbrains.mps.util.AbstractComputeRunnable.run(AbstractComputeRunnable.java:27)
    at jetbrains.mps.smodel.WorkbenchModelAccess.runReadAction(WorkbenchModelAccess.java:97)
    at jetbrains.mps.smodel.ModelAccessBase.runReadAction(ModelAccessBase.java:53)
    at jetbrains.mps.smodel.ModelAccessHelper.runReadAction(ModelAccessHelper.java:44)
    at jetbrains.mps.nodeEditor.cellMenu.AbstractNodeSubstituteInfo.getMatchingActions(AbstractNodeSubstituteInfo.java:155)
    at de.slisson.mps.richtext.runtime.WordCellSubstituteInfo.getMatchingActions(WordCellSubstituteInfo.java:38)
    at jetbrains.mps.nodeEditor.EditorComponent$30.lambda$compute$0(EditorComponent.java:2545)
    at jetbrains.mps.typesystem.inference.TypeContextManager$Executor.doExecute(TypeContextManager.java:273)
    at jetbrains.mps.typesystem.inference.TypeContextManager$Executor.execute(TypeContextManager.java:246)
    at jetbrains.mps.typesystem.inference.TypeContextManager.runTypeCheckingComputation(TypeContextManager.java:120)
    at jetbrains.mps.nodeEditor.EditorComponent$30.compute(EditorComponent.java:2543)
    at jetbrains.mps.nodeEditor.EditorComponent$30.compute(EditorComponent.java:2539)
    at jetbrains.mps.util.ComputeRunnable.compute(ComputeRunnable.java:32)
    at jetbrains.mps.util.AbstractComputeRunnable.run(AbstractComputeRunnable.java:27)
    at jetbrains.mps.smodel.WorkbenchModelAccess.runReadAction(WorkbenchModelAccess.java:97)
    at jetbrains.mps.smodel.ModelAccessBase.runReadAction(ModelAccessBase.java:53)
    at jetbrains.mps.nodeEditor.EditorComponent.runRead(EditorComponent.java:2451)
    at jetbrains.mps.nodeEditor.EditorComponent.getMatchingActions(EditorComponent.java:2539)
    at jetbrains.mps.nodeEditor.EditorComponent.activateNodeSubstituteChooser(EditorComponent.java:2513)
    at jetbrains.mps.nodeEditor.EditorComponent.activateNodeSubstituteChooser(EditorComponent.java:2483)
    at jetbrains.mps.nodeEditor.NodeEditorActions$Complete.execute(NodeEditorActions.java:689)
    at jetbrains.mps.nodeEditor.actions.ActionHandlerImpl$1.doExecute(ActionHandlerImpl.java:56)
    at jetbrains.mps.editor.runtime.commands.EditorCommand.run(EditorCommand.java:54)
    at jetbrains.mps.smodel.WorkbenchModelAccess$CommandRunnable$1.run(WorkbenchModelAccess.java:632)
    at jetbrains.mps.smodel.WriteActionDispatcher.run(WriteActionDispatcher.java:39)
    at jetbrains.mps.smodel.WorkbenchModelAccess$3.run(WorkbenchModelAccess.java:136)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:898)
    at jetbrains.mps.smodel.WorkbenchModelAccess.runWriteAction(WorkbenchModelAccess.java:145)
    at jetbrains.mps.smodel.WorkbenchModelAccess$CommandRunnable.run(WorkbenchModelAccess.java:627)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:129)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:100)
    at jetbrains.mps.smodel.WorkbenchModelAccess.runWriteActionInCommand(WorkbenchModelAccess.java:440)
    at jetbrains.mps.smodel.WorkbenchModelAccess.executeCommand(WorkbenchModelAccess.java:403)
    at jetbrains.mps.project.ProjectModelAccess.executeCommand(ProjectModelAccess.java:43)
    at jetbrains.mps.nodeEditor.actions.ActionHandlerImpl.executeAction(ActionHandlerImpl.java:53)
    at jetbrains.mps.nodeEditor.actions.ActionHandlerImpl.executeAction(ActionHandlerImpl.java:43)
    at jetbrains.mps.nodeEditor.selection.EditorCellSelection.executeAction(EditorCellSelection.java:166)
    at jetbrains.mps.nodeEditor.selection.EditorCellLabelSelection.executeAction(EditorCellLabelSelection.java:172)
    at jetbrains.mps.ide.editor.actions.Complete_Action.doExecute(Complete_Action.java:59)
    at jetbrains.mps.workbench.action.BaseAction$2.run(BaseAction.java:145)
    at jetbrains.mps.workbench.action.BaseAction.actionPerformed(BaseAction.java:155)
    at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:197)
    at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:88)
    at com.intellij.openapi.application.TransactionGuardImpl.submitTransactionAndWait(TransactionGuardImpl.java:156)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:211)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$1.performAction(IdeKeyEventDispatcher.java:587)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.lambda$processAction$132(IdeKeyEventDispatcher.java:634)
    at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:199)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:633)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.java:477)
    at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:211)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:609)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:387)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.