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.