Skip to content

rune-langium / core/src / RuneDslValidator

Class: RuneDslValidator ​

Defined in: packages/core/src/services/rune-dsl-validator.ts:69

Custom validator for the Rune DSL.

Implements structural, naming, expression, and reporting validations ported from the original Xtext implementation.

Rule categories:

  • S-##: Structural constraints (duplicates, cycles, missing fields)
  • N-##: Naming convention rules
  • E-##: Expression validation rules
  • R-##: Reporting validation rules

Constructors ​

Constructor ​

ts
new RuneDslValidator(): RuneDslValidator;

Returns ​

RuneDslValidator

Methods ​

checkAttributeCardinality() ​

ts
checkAttributeCardinality(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:155

S-04: Attribute cardinality must have lower <= upper.

Parameters ​

ParameterType
nodeAttribute
acceptValidationAcceptor

Returns ​

void


checkAttributeNaming() ​

ts
checkAttributeNaming(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:454

N-02: Attribute names should start with lowercase. Exempt: attributes inside Annotation blocks and ChoiceOptions (matching Xtext behavior).

Parameters ​

ParameterType
nodeAttribute
acceptValidationAcceptor

Returns ​

void


checkAttributeTypeResolved() ​

ts
checkAttributeTypeResolved(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:288

S-17: Attribute type reference must resolve.

NOTE: Not registered. Langium's built-in linker already emits an error for unresolved TypeCall.type references, so registering this check would produce duplicate error messages.

Parameters ​

ParameterType
nodeAttribute
acceptValidationAcceptor

Returns ​

void


checkChoiceMinOptions() ​

ts
checkChoiceMinOptions(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:351

S-21: Choice must have at least two options.

Parameters ​

ParameterType
nodeChoice
acceptValidationAcceptor

Returns ​

void


checkChoiceNaming() ​

ts
checkChoiceNaming(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:492

N-05: Choice names should start with uppercase.

Parameters ​

ParameterType
nodeChoice
acceptValidationAcceptor

Returns ​

void


checkChoiceNoDuplicateOptions() ​

ts
checkChoiceNoDuplicateOptions(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:218

S-11: No duplicate choice option type references.

Parameters ​

ParameterType
nodeChoice
acceptValidationAcceptor

Returns ​

void


checkChoiceOptionTypeResolved() ​

ts
checkChoiceOptionTypeResolved(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:367

S-22: ChoiceOption type must resolve.

NOTE: Not registered. Langium's built-in linker already emits an error for unresolved TypeCall.type references, so registering this check would produce duplicate error messages.

Parameters ​

ParameterType
nodeChoiceOption
acceptValidationAcceptor

Returns ​

void


checkConditionHasExpression() ​

ts
checkConditionHasExpression(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:391

S-24: Condition must have an expression body.

Parameters ​

ParameterType
nodeCondition
acceptValidationAcceptor

Returns ​

void


checkConditionNaming() ​

ts
checkConditionNaming(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:504

N-06: Condition names should start with uppercase.

Parameters ​

ParameterType
nodeCondition
acceptValidationAcceptor

Returns ​

void


checkDataAttributeOverrideValid() ​

ts
checkDataAttributeOverrideValid(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:256

S-15: Override attribute must exist in the parent type.

Parameters ​

ParameterType
nodeData
acceptValidationAcceptor

Returns ​

void


checkDataExtendsCycle() ​

ts
checkDataExtendsCycle(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:136

S-02: Detect circular inheritance in Data extends chain.

Parameters ​

ParameterType
nodeData
acceptValidationAcceptor

Returns ​

void


checkDataMustHaveAttributesOrSuperType() ​

ts
checkDataMustHaveAttributesOrSuperType(_node, _accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:276

S-16: Data type should have at least one attribute or extend another type.

Parameters ​

ParameterType
_nodeData
_acceptValidationAcceptor

Returns ​

void


checkDataNaming() ​

ts
checkDataNaming(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:441

N-01: Data type names should start with uppercase.

Parameters ​

ParameterType
nodeData
acceptValidationAcceptor

Returns ​

void


checkDataNoDuplicateAttributes() ​

ts
checkDataNoDuplicateAttributes(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:120

S-01: No duplicate attribute names within a Data type.

Parameters ​

ParameterType
nodeData
acceptValidationAcceptor

Returns ​

void


checkEnumExtendsCycle() ​

ts
checkEnumExtendsCycle(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:332

S-20: Detect circular inheritance in Enum extends chain.

Parameters ​

ParameterType
nodeRosettaEnumeration
acceptValidationAcceptor

Returns ​

void


checkEnumNaming() ​

ts
checkEnumNaming(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:480

N-04: Enum names should start with uppercase.

Parameters ​

ParameterType
nodeRosettaEnumeration
acceptValidationAcceptor

Returns ​

void


checkEnumNoDuplicateValues() ​

ts
checkEnumNoDuplicateValues(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:202

S-09: No duplicate enum value names.

Parameters ​

ParameterType
nodeRosettaEnumeration
acceptValidationAcceptor

Returns ​

void


checkEnumValueNaming() ​

ts
checkEnumValueNaming(_node, _accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:516

N-07: Enum value names should start with an uppercase letter (convention: PascalCase or UPPER_CASE).

Parameters ​

ParameterType
_nodeRosettaEnumeration
_acceptValidationAcceptor

Returns ​

void


checkEnumValueNamingRule() ​

ts
checkEnumValueNamingRule(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:524

N-08: Standalone enum value naming (used from ChoiceOption context).

Parameters ​

ParameterType
nodeRosettaEnumValue
acceptValidationAcceptor

Returns ​

void


checkExpressionValid() ​

ts
checkExpressionValid(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:568

Expression validator dispatcher. Routes to specific checks based on expression $type.

Parameters ​

ParameterType
nodeRosettaExpression
acceptValidationAcceptor

Returns ​

void


checkFunctionNaming() ​

ts
checkFunctionNaming(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:468

N-03: Function names should start with uppercase.

Parameters ​

ParameterType
nodeRosettaFunction
acceptValidationAcceptor

Returns ​

void


checkFunctionNoDuplicateConditions() ​

ts
checkFunctionNoDuplicateConditions(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:316

S-19: No duplicate condition names in a function.

Parameters ​

ParameterType
nodeRosettaFunction
acceptValidationAcceptor

Returns ​

void


checkFunctionNoDuplicateInputs() ​

ts
checkFunctionNoDuplicateInputs(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:173

S-06: No duplicate function input names.

Parameters ​

ParameterType
nodeRosettaFunction
acceptValidationAcceptor

Returns ​

void


checkFunctionNoDuplicateShortcuts() ​

ts
checkFunctionNoDuplicateShortcuts(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:300

S-18: No duplicate shortcut names in a function.

Parameters ​

ParameterType
nodeRosettaFunction
acceptValidationAcceptor

Returns ​

void


checkFunctionOutputRequired() ​

ts
checkFunctionOutputRequired(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:190

S-07: Functions should have an output. Dispatch functions (with dispatchAttribute) are exempt — they inherit output from the parent.

Parameters ​

ParameterType
nodeRosettaFunction
acceptValidationAcceptor

Returns ​

void


checkImportNotEmpty() ​

ts
checkImportNotEmpty(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:427

S-27: Import path must not be empty.

Parameters ​

ParameterType
nodeImport
acceptValidationAcceptor

Returns ​

void


checkModelNamespaceValid() ​

ts
checkModelNamespaceValid(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:379

S-23: Namespace must be a valid qualified name.

Parameters ​

ParameterType
nodeRosettaModel
acceptValidationAcceptor

Returns ​

void


checkModelNoDuplicateElements() ​

ts
checkModelNoDuplicateElements(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:236

S-13: No duplicate top-level element names in the same model. Dispatch function overloads share the same name intentionally — skip them.

Parameters ​

ParameterType
nodeRosettaModel
acceptValidationAcceptor

Returns ​

void


checkOperationHasExpression() ​

ts
checkOperationHasExpression(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:415

S-26: Operation must have an expression body.

Parameters ​

ParameterType
nodeOperation
acceptValidationAcceptor

Returns ​

void


checkRuleHasExpression() ​

ts
checkRuleHasExpression(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:553

R-01: Rule must have an expression body.

Parameters ​

ParameterType
nodeRosettaRule
acceptValidationAcceptor

Returns ​

void


checkRuleNaming() ​

ts
checkRuleNaming(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:539

N-10: Rule names should start with uppercase.

Parameters ​

ParameterType
nodeRosettaRule
acceptValidationAcceptor

Returns ​

void


checkShortcutHasExpression() ​

ts
checkShortcutHasExpression(node, accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:403

S-25: ShortcutDeclaration must have an expression body.

Parameters ​

ParameterType
nodeShortcutDeclaration
acceptValidationAcceptor

Returns ​

void


checkShortcutNaming() ​

ts
checkShortcutNaming(_node, _accept): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:531

N-09: Shortcut names should start with lowercase.

Parameters ​

ParameterType
_nodeShortcutDeclaration
_acceptValidationAcceptor

Returns ​

void


registerChecks() ​

ts
registerChecks(services): void;

Defined in: packages/core/src/services/rune-dsl-validator.ts:73

Register validation checks with the Langium validation registry.

Parameters ​

ParameterType
servicesLangiumCoreServices

Returns ​

void

Core packages released under MIT. Studio app released under FSL-1.1-ALv2.