Implement capability generics, checked package specializations and CRUD scaffolding
Add kinded parameters, capability bounds, Self, aliases and closed application identities. Check generic implementations universally and build candidate-specific codecs and descriptors from immutable schemas. Preserve lexical aliases and exact dispatch identities in package and host bindings. Add an imperative CRUD+index domain scaffold with explicit soft-deletion semantics, source/codegen regression coverage, installed CLI tests and an authoring guide. Existing Web Studio opaque props and class-level create-menu migration are separate from the implemented language core.
This commit is contained in:
+52
-10
@@ -27,6 +27,7 @@ workspaceItem
|
||||
| sharedAttachmentDecl
|
||||
| conformanceDecl
|
||||
| constructorBindingDecl
|
||||
| typeAliasDecl
|
||||
;
|
||||
|
||||
resourceImportDecl
|
||||
@@ -46,6 +47,7 @@ resourcePreamble
|
||||
: resourceImportDecl
|
||||
| externalAtomDecl
|
||||
| externalInterfaceDecl
|
||||
| typeAliasDecl
|
||||
;
|
||||
|
||||
atomDecl
|
||||
@@ -53,10 +55,39 @@ atomDecl
|
||||
;
|
||||
|
||||
interfaceResourceDecl
|
||||
: resourcePreamble* INTERFACE identifier ID stringLiteral REVISION stringLiteral
|
||||
: resourcePreamble* INTERFACE identifier typeParameters? ID stringLiteral REVISION stringLiteral
|
||||
(REQUIRES interfaceType (COMMA interfaceType)*)?
|
||||
LBRACE interfaceMember* RBRACE
|
||||
;
|
||||
|
||||
typeParameters
|
||||
: LT typeParameter (COMMA typeParameter)* GT
|
||||
;
|
||||
|
||||
typeParameter
|
||||
: VALUE identifier (COLON STORABLE)?
|
||||
| OBJECT identifier (IMPLEMENTS interfaceType (AMP interfaceType)*)?
|
||||
;
|
||||
|
||||
interfaceType
|
||||
: identifier typeArguments?
|
||||
;
|
||||
|
||||
typeArguments
|
||||
: LT typeArgument (COMMA typeArgument)* GT
|
||||
;
|
||||
|
||||
typeArgument
|
||||
: ATOM identifier
|
||||
| INTERFACE interfaceType
|
||||
| OBJECT identifier
|
||||
| valueType
|
||||
;
|
||||
|
||||
typeAliasDecl
|
||||
: TYPE identifier typeParameters? EQUAL valueType SEMI
|
||||
;
|
||||
|
||||
interfaceMember
|
||||
: valueMember
|
||||
| relationshipMember
|
||||
@@ -93,7 +124,8 @@ relationshipOperation
|
||||
|
||||
targetConstraint
|
||||
: ATOM identifier
|
||||
| INTERFACE identifier
|
||||
| INTERFACE identifier typeArguments?
|
||||
| OBJECT identifier
|
||||
;
|
||||
|
||||
packageResourceDecl
|
||||
@@ -109,12 +141,12 @@ packageExport
|
||||
;
|
||||
|
||||
packageOperationExport
|
||||
: OPERATION identifier ID stringLiteral COLON valueType ARROW valueType
|
||||
: OPERATION identifier typeParameters? ID stringLiteral COLON valueType ARROW valueType
|
||||
MODE operationMode eventClause? RECEIVER receiverRequirement dependencyBlock? SEMI
|
||||
;
|
||||
|
||||
packageFunctionExport
|
||||
: FUNCTION identifier ID stringLiteral COLON valueType ARROW valueType
|
||||
: FUNCTION identifier typeParameters? ID stringLiteral COLON valueType ARROW valueType
|
||||
dependencyBlock? SEMI
|
||||
;
|
||||
|
||||
@@ -138,7 +170,8 @@ operationMode
|
||||
receiverRequirement
|
||||
: ANY
|
||||
| ATOM identifier
|
||||
| INTERFACES LBRACK identifierList? RBRACK
|
||||
| OBJECT identifier
|
||||
| INTERFACES LBRACK (interfaceType (COMMA interfaceType)*)? RBRACK
|
||||
;
|
||||
|
||||
identifierList
|
||||
@@ -152,7 +185,7 @@ dependencyBlock
|
||||
dependencyPort
|
||||
: STATE identifier ID stringLiteral COLON valueType primitiveList SEMI
|
||||
| EDGE identifier ID stringLiteral COLON cardinality targetConstraint primitiveList SEMI
|
||||
| INTERFACE identifier ID stringLiteral COLON identifier SEMI
|
||||
| INTERFACE identifier ID stringLiteral COLON identifier typeArguments? SEMI
|
||||
| CONSTRUCTOR identifier ID stringLiteral COLON identifier (INPUT valueType)? SEMI
|
||||
;
|
||||
|
||||
@@ -199,7 +232,7 @@ edgeEndpoint
|
||||
;
|
||||
|
||||
conformanceDecl
|
||||
: CONFORM identifier AS identifier (ID stringLiteral)? (SEMANTIC_MAJOR INTEGER)?
|
||||
: CONFORM identifier AS identifier typeArguments? (ID stringLiteral)? (SEMANTIC_MAJOR INTEGER)?
|
||||
LBRACE conformanceItem* RBRACE
|
||||
;
|
||||
|
||||
@@ -238,7 +271,7 @@ operationName
|
||||
operationProvider
|
||||
: STATE identifier DOT statePrimitive
|
||||
| EDGE identifier DOT identifier DOT edgePrimitive
|
||||
| PACKAGE identifier DOT identifier dependencyBindingBlock?
|
||||
| PACKAGE identifier DOT identifier typeArguments? dependencyBindingBlock?
|
||||
;
|
||||
|
||||
statePrimitive
|
||||
@@ -263,7 +296,7 @@ dependencyBindingBlock
|
||||
dependencyBinding
|
||||
: identifier TO STATE identifier (VIA EDGE identifier DOT identifier)? SEMI
|
||||
| identifier TO EDGE identifier DOT identifier (VIA EDGE identifier DOT identifier)? SEMI
|
||||
| identifier TO INTERFACE identifier (VIA EDGE identifier DOT identifier)? SEMI
|
||||
| identifier TO INTERFACE identifier typeArguments? (VIA EDGE identifier DOT identifier)? SEMI
|
||||
| identifier TO CONSTRUCTOR identifier SEMI
|
||||
;
|
||||
|
||||
@@ -277,10 +310,12 @@ valueType
|
||||
| WATCH_HANDLE
|
||||
| MESSAGE stringLiteral
|
||||
| ATOM_REF LT identifier GT
|
||||
| INTERFACE_REF LT identifier GT
|
||||
| INTERFACE_REF LT identifier typeArguments? GT
|
||||
| REF LT identifier GT
|
||||
| OPTIONAL LT valueType GT
|
||||
| LIST LT valueType GT
|
||||
| RECORD LBRACE recordField* RBRACE
|
||||
| identifier typeArguments?
|
||||
;
|
||||
|
||||
recordField
|
||||
@@ -338,6 +373,11 @@ stringLiteral
|
||||
;
|
||||
|
||||
WORKSPACE: 'workspace';
|
||||
TYPE: 'type';
|
||||
OBJECT: 'object';
|
||||
STORABLE: 'storable';
|
||||
IMPLEMENTS: 'implements';
|
||||
REF: 'ref';
|
||||
FRAGMENT: 'fragment';
|
||||
IMPORT: 'import';
|
||||
EXTERNAL: 'external';
|
||||
@@ -441,6 +481,8 @@ LPAREN: '(';
|
||||
RPAREN: ')';
|
||||
LT: '<';
|
||||
GT: '>';
|
||||
AMP: '&';
|
||||
EQUAL: '=';
|
||||
|
||||
INTEGER: '-'? [0-9]+;
|
||||
JSON_NUMBER: '-'? ('0' | [1-9] [0-9]*) ('.' [0-9]+)? ([eE] [+-]? [0-9]+)?;
|
||||
|
||||
Reference in New Issue
Block a user