RIDDL 1.16.3 Released
RIDDL 1.16.3 is now available.
RIDDL 1.16.3 is now available. This release of the RIDDL compiler and language tooling includes the following changes:
What’s New
Release 1.16.3
Parser Bug Fixes
-
ZonedDateTime was unparseable: The
ZonedDateTimepredefined type could never be parsed becausePredefTypes.zonedDateTypeslistedZonedDatetwice instead ofZonedDateandZonedDateTime. Fixed so bothZonedDate(zone)andZonedDateTime(zone)are now correctly parsed. -
Zone parameter matching fixed: The
zoneparameter inZonedDate/ZonedDateTimeusedStringIn("A-Z", "0-9", ":.+-")which only matched those exact literal strings, not actual timezone identifiers. Replaced withCharsWhileInto correctly match timezone character patterns likeUTC,EST, etc. -
graph/table aggregate use cases caused MatchError: The parser accepted
graphandtableas aggregate use case keywords (e.g.,graph MyGraph { ... }) but theAggregateUseCaseenum had no correspondingGraphCaseorTableCasevariants, causing a runtimeMatchError. Added both enum cases with match arms in the parser andPrettifyVisitor.
URI → URL Rename
- Predefined type renamed from URI to URL: The internal
PredefType.URIconstant andallPredefTypesentry have been renamed toURLto match the parser keyword (URL) and user-facing syntax. The AST class remainsURI(to avoid JVM class name conflicts) but itskindmethod now returns"URL", so error messages and formatted output correctly showURL(...)instead ofURI(...).
New Validation: Predefined Type Name Conflicts
-
Error when redefining a built-in type name: Defining a type whose name exactly matches a predefined type (e.g.,
type Currency is Decimal(10,2)ortype Location is { lat: Real, lon: Real }) now produces a validation error. This prevents shadowing built-in types which causes downstream parser and resolution issues — for example,Currencyrequires a country code parameter and won’t parse correctly if redefined. -
Style warning for case-variant type names: Defining a type whose name differs from a predefined type only in casing (e.g.,
type Timestamp is TimeStamp) now produces a style warning, since such aliases are redundant.
Affected Predefined Types
The full list of names that cannot be used for user-defined types: Abstract, Blob, Boolean, Current, Currency, Date, DateTime, Decimal, Duration, Id, Integer, Location, Length, Luminosity, Mass, Mole, Nothing, Natural, Number, Pattern, Range, Real, String, Temperature, Time, TimeStamp, Unknown, URL, UserId, UUID, Whole, ZonedDate, ZonedDateTime.
Migration Notes
If your models define types that shadow any of the above names, rename them to avoid conflicts. Common cases found in existing models:
type UserId is String→ rename totype UserIdentifier is Stringtype Location is { ... }→ rename totype GeoLocation is { ... }type Currency is Decimal(10,2)→ rename totype MonetaryAmount is Decimal(10,2)