Skip to content

Commit 03123bf

Browse files
authored
Merge branch 'maintenance/mps20213' into bugfix/typesystem-improvement-(#668)
2 parents ee2d723 + 5a3c3e9 commit 03123bf

File tree

381 files changed

+78576
-30920
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

381 files changed

+78576
-30920
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: PR to merge into the next version
2+
3+
on:
4+
push:
5+
branches:
6+
- 'maintenance/mps*'
7+
8+
jobs:
9+
create-pr:
10+
uses: specificlanguages/cascading-merge/.github/workflows/workflow.yml@v1
11+
with:
12+
exclude_branch_prefix: maintenance/mps3

CHANGELOG.md

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
# Changelog
2+
3+
All notable changes to this project are documented in this file.
4+
5+
Format of the log is _loosely_ based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6+
The project does _not_ follow Semantic Versioning and the changes are documented in reverse chronological order, grouped by calendar month.
7+
8+
## April 2024
9+
10+
### Removed
11+
12+
- The unnecessary super types of the tuple type were removed and are not necessary anymore.
13+
14+
### Added
15+
16+
- RecordValues can have a customized string representation.
17+
18+
### Fixed
19+
20+
- Empty-like nodes now automatically select the first code completion entry if there is only one entry.
21+
- Enum literals now can be compared for equality in the generator.
22+
- String representation of RecordValues is improved.
23+
24+
## March 2024
25+
26+
### Added
27+
28+
- *MessageDefiniton* uses *extensionPoint/IdentifierConfigurator/* that allows the user to decide to use german umlauts and paragraphs in it.
29+
- This extensionPoint got a new method to select which implementation will be chosen.
30+
31+
### Fixed
32+
33+
- The type calculation of field setters now works.
34+
- `NumberType#containsZero` now correctly deals with infinite values.
35+
36+
## February 2024
37+
38+
### Added
39+
40+
- updated gradle build. Build will now fail in case tests were failing.
41+
- Enumerations can have an order by declaration, by literal or by value ascociated with the literal
42+
43+
## January 2024
44+
45+
### Changed
46+
47+
- The PCollections library was updated to version 4.0.1.
48+
49+
### Fixed
50+
51+
- Uncatched `DateTimeException` during check DateLiteral.
52+
- IntHelper.equals now correctly deals with the combination of 0.0,-0.0,0 and -0.
53+
54+
### Added
55+
56+
- `NumberLiteral` can now be converted to a `BigDecimal` with the method `toBigDecimal`.
57+
- Named based access of result columns of multi decision tables were added. Columns can be referenced by name and coexist with the index based access.
58+
59+
## December 2023
60+
61+
### Fixed
62+
63+
- The `index` expression in collections operations now works correctly in nested expressions in the interpreter and generator.
64+
- Generation of nested short lambda expression now use the correct type for "it" as a variable.
65+
- Collections: The index expression now works with collection types in the generator.
66+
67+
### Added
68+
69+
- The `all` and `any` operation of collections now also support the `index` expression. The concepts `AllWithIndexOp` and `AnyWithIndexOp` are therefore deprecated.
70+
71+
### Changed
72+
73+
- The class `IETS3ExprEvalHelper` was deprecated and a new class `IETS3ExprEvaluator` was introduced that can also influence the creation of the computation trace.
74+
75+
## November 2023
76+
77+
### Added
78+
79+
- The `sort` method of collections now supports more types: all primitive types, the option type, all datetime types, the temporal type and the record type
80+
- Records: The sorting order can be added through the intention `Add a Comparison Order`, otherwise, the records are sorted based on the declaration order of the members
81+
- Option: Sorting removes all `none` values since the underlying data structure of collections doesn't support null values.
82+
83+
### Changed
84+
85+
- The comparison helper in org.iets3.core.expr.simpleTypes.runtime and the equals helper in the test language where merged into a new class EqualsHelper inside the first runtime solution to return the same values.
86+
87+
### Fixed
88+
89+
- String validation: A bug in the number detection logic was fixed
90+
- String validation: A bug in the successor execution logic was fixed
91+
-
92+
## October 2023
93+
94+
### Fixed
95+
96+
- Generation of nested short lambda expression now use the correct type for "it" as a variable.
97+
98+
## September 2023
99+
100+
### Added
101+
102+
- Temporal Literal shows an error if two slices use the same point in time. The check can handle date literals and (nested) references to constants with a date literal. (See [PR 707](https://github.com/IETS3/iets3.opensource/pull/707))
103+
- Temporal Literal shows a warning if the point in time of a slice cannot be unwrapped to a date literal, rendering the duplicates-check mentioned above ineffective. (See [PR 707](https://github.com/IETS3/iets3.opensource/pull/707))
104+
105+
### New language org.iets3.core.expr.typetags.bindingtime
106+
107+
The language extends typetags with support for different binding times of values. Consistency checks ensure that information is passed on at appropriate levels.
108+
109+
### Fixed
110+
111+
- Unit comparisons for the **same** unit defined in **different** packages now lead to an error message for compatibility
112+
- `SliceValue` can now correctly be checked for equality: `SliceValue.equals()` and `SliceValue.hashCode()` are overwritten.
113+
- `TemporalValue.hashCode()` was overwritten, thus `equals` and `hashCode()` are in sync now.
114+
- Generation of nested short lambda expression now use the correct type for "it" as a variable.
115+
116+
### Removed
117+
118+
- the MetaUnit node was removed since it was not actively used
119+
120+
## July 2023
121+
122+
### Fixed
123+
124+
- Computation of the least-common-supertype for expressions with different return types has been fixed. The typesystem now correctly infers a join type (c.f. [original issue](https://github.com/IETS3/iets3.opensource/issues/505))
125+
- Naming constraint of IValidNamedConcept is customizable [original request](https://github.com/IETS3/iets3.opensource/pull/631)
126+
- Made transformation action [applyCommentsToIDocumentable](http://127.0.0.1:63320/node?ref=r%3A80fb0853-eb3b-4e84-aebd-cc7fdb011d97%28org.iets3.core.base.editor%29%2F5981628904839421072) only applicable if documentation is allowed [original request](https://github.com/IETS3/iets3.opensource/pull/626)
127+
128+
### Added
129+
130+
- Tuples are now handled within the typesystem.
131+
Instead of allowing JoinTypes within tuples we merge different tuple types by JoinTypes.
132+
- Each subconcept of IValidNamedConcept can now contribute and customize naming constraints
133+
134+
### Changed
135+
136+
- `IETS3ExprEvalHelper` methods no longer log exceptions that they re-throw. Some callers may ignore exceptions thrown by the interpreter, and having them logged unnecessarily clutters the logs. It is now the caller's responsibility to log exceptions where needed.

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ We take care of porting changes done in older supported MPS versions to the newe
2121
For details see [wiki](https://github.com/IETS3/iets3.opensource/wiki/Supported-MPS-Versions).
2222

2323
### What MPS versions are currently supported?
24-
- MPS 2021.1 (branch: [master](https://github.com/IETS3/iets3.opensource/tree/master))
24+
- MPS 2021.3 (branch: [master](https://github.com/IETS3/iets3.opensource/tree/master))
25+
- MPS 2021.2 (branch: [maintenance/mps20212](https://github.com/IETS3/iets3.opensource/tree/maintenance/mps20212))
26+
- MPS 2021.1 (branch: [maintenance/mps20211](https://github.com/IETS3/iets3.opensource/tree/maintenance/mps20211))
2527
- MPS 2020.3 (branch: [maintenance/mps20203](https://github.com/IETS3/iets3.opensource/tree/maintenance/mps20203))
26-
- MPS 2020.2 (branch: [maintenance/mps20202](https://github.com/IETS3/iets3.opensource/tree/maintenance/mps20202))
27-
- MPS 2020.1 (branch: [maintenance/mps20201](https://github.com/IETS3/iets3.opensource/tree/maintenance/mps20201))
2828

2929
## Community
3030

build.gradle

100755100644
Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import de.itemis.mps.gradle.*
2-
2+
import groovy.xml.XmlSlurper
33
import java.time.LocalDate
44
import java.time.format.DateTimeFormatter
55
import java.time.format.FormatStyle
@@ -10,7 +10,7 @@ buildscript {
1010
maven { url 'https://artifacts.itemis.cloud/repository/maven-mps/' }
1111
}
1212
dependencies {
13-
classpath 'de.itemis.mps:mps-gradle-plugin:1.7.288.4ea765f'
13+
classpath 'de.itemis.mps:mps-gradle-plugin:1.23.1.412.a54f29f'
1414
}
1515
}
1616

@@ -39,7 +39,7 @@ apply plugin: 'download-jbr'
3939

4040
// configure jbr download
4141
downloadJbr {
42-
jbrVersion = '11_0_11-b1341.60'
42+
jbrVersion = '11_0_14_1-b1751.46'
4343
}
4444

4545
// detect if we are in a CI build
@@ -53,12 +53,12 @@ if (project.hasProperty("forceCI")) {
5353
def forceLocal = project.hasProperty("forceLocalDependencies")
5454

5555
def major = "2021"
56-
def minor = "1"
56+
def minor = "3"
5757

5858
// Dependency versions
59-
ext.mpsVersion = '2021.1.4'
59+
ext.mpsVersion = '2021.3.5'
6060

61-
def mbeddrVersion = "2021.1+"
61+
def mbeddrVersion = "2021.3+"
6262

6363
// if building a against a special branch from mbeddr is required add the name here
6464
// the name is enough no trailing "." is required, also the plain name from git can
@@ -81,12 +81,13 @@ if (project.hasProperty('iets3OpenSourceVersion')) {
8181
if (ciBuild) {
8282
currentBranch = GitBasedVersioning.gitBranch
8383

84-
def buildNumber = System.env.BUILD_NUMBER.toInteger()
85-
if (currentBranch.startsWith("maintenance") || currentBranch.startsWith("mps")) {
84+
def buildNumber = System.env.BUILD_COUNTER.toInteger()
85+
if (currentBranch.startsWith("maintenance-")) {
8686
version = "$major.$minor.$buildNumber.${GitBasedVersioning.gitShortCommitHash}"
8787
} else {
88-
version = GitBasedVersioning.getVersionWithCount(major, minor, buildNumber)
89-
}
88+
def isSnapshot = !(currentBranch.equals("master") || currentBranch.startsWith("datev-loon-staging-") || currentBranch.startsWith("datev-steuer-staging-"))
89+
version = GitBasedVersioning.getVersionWithCount(major, minor, buildNumber) + (isSnapshot ? "-SNAPSHOT" : "")
90+
}
9091
println "##teamcity[buildNumber '${version}']"
9192
} else {
9293
version = "$major.$minor-SNAPSHOT"
@@ -110,13 +111,14 @@ ext.snapshotRepository = 'https://artifacts.itemis.cloud/repository/maven-mps-sn
110111
ext.publishingRepository = version.toString().endsWith("-SNAPSHOT") ? snapshotRepository : releaseRepository
111112

112113

114+
113115
// 'artifacts' is used in the generated ant scripts as build output directory
114116
ext.artifactsDir = new File(buildDir, 'artifacts')
115117
ext.incrementalBuild = !project.hasProperty("disableIncrementalBuild")
116118

117119

118120
wrapper {
119-
gradleVersion '5.5.1'
121+
gradleVersion '8.5'
120122
distributionType Wrapper.DistributionType.ALL
121123
}
122124

@@ -131,7 +133,7 @@ dependencies {
131133
mps "com.jetbrains:mps:$mpsVersion"
132134
languageLibs "com.mbeddr:platform:$mbeddrVersionSelector"
133135
junitAnt 'org.apache.ant:ant-junit:1.10.6'
134-
pcollections 'org.pcollections:pcollections:3.1.4'
136+
pcollections 'org.pcollections:pcollections:4.0.1'
135137
}
136138

137139

@@ -215,6 +217,24 @@ task buildAndRunTests(type: TestLanguages, dependsOn: buildLanguages) {
215217
}
216218
}
217219

220+
task failOnTestError() {
221+
description 'evaluate junit result and fail on error'
222+
doLast {
223+
224+
def juniXml = file('TESTS-TestSuites.xml')
225+
if(juniXml.exists()){
226+
def junitResult = new XmlSlurper().parse(juniXml)
227+
def failures = junitResult.'**'.findAll { it.name() == 'failure' }
228+
def errors = junitResult.'**'.findAll { it.name() == 'error' }
229+
230+
if (failures || errors) {
231+
def amount = failures.size() + errors.size()
232+
throw new GradleException(amount + " JUnit tests failed. Check the test report for details.")
233+
}
234+
}
235+
}
236+
}
237+
buildAndRunTests.configure { finalizedBy failOnTestError }
218238
check.dependsOn buildAndRunTests
219239

220240
task packageLanguages(type: Zip, dependsOn: buildLanguages) {
@@ -274,7 +294,7 @@ publishing {
274294
}
275295
}
276296
}
277-
if (currentBranch == "master" || currentBranch.startsWith("maintenance") || currentBranch.startsWith("mps")) {
297+
if (currentBranch == "master" || currentBranch.startsWith("maintenance") ) {
278298
maven {
279299
name = "GitHubPackages"
280300
url = uri("https://maven.pkg.github.com/IETS3/iets3.opensource")

0 commit comments

Comments
 (0)