sysml-diagram 0.15.0 → 0.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/main.js +262 -188
- package/out/main.js.map +3 -3
- package/package.json +1 -1
- package/resources/sysml.dimension-table.json +1 -1
package/out/main.js
CHANGED
|
@@ -133689,6 +133689,9 @@ function isExhibitStateDecl(item) {
|
|
|
133689
133689
|
var ExitAction = "ExitAction";
|
|
133690
133690
|
var ExposeMember = "ExposeMember";
|
|
133691
133691
|
var ExposePath = "ExposePath";
|
|
133692
|
+
function isExposePath(item) {
|
|
133693
|
+
return reflection2.isInstance(item, ExposePath);
|
|
133694
|
+
}
|
|
133692
133695
|
var ExpressionDecl = "ExpressionDecl";
|
|
133693
133696
|
var FeatureDecl = "FeatureDecl";
|
|
133694
133697
|
function isFeatureDecl(item) {
|
|
@@ -168010,6 +168013,13 @@ var DIAGNOSTIC_MESSAGES = {
|
|
|
168010
168013
|
// implicit-redefinition resolution this validator does not yet model.
|
|
168011
168014
|
RES017_DUPLICATE_MEMBER: (name) => `'${name}' is already declared in this namespace. Members must be distinguishable by name \u2014 rename or remove the duplicate.`,
|
|
168012
168015
|
RES017_DUPLICATE_SHORT_NAME: (name) => `Short name '<${name}>' is already used in this namespace. Members must be distinguishable \u2014 rename the short name.`,
|
|
168016
|
+
// issue #102 — REQ-387. The filter evaluator (`import-visibility.ts`,
|
|
168017
|
+
// `evaluateFilterCondition`) decides metadata-presence tests and the Boolean
|
|
168018
|
+
// operators over them; every other form fails OPEN, keeping the member. Failing
|
|
168019
|
+
// open is the right default — under-importing would manufacture spurious
|
|
168020
|
+
// RES001s — but an unevaluated filter produces a scope or view that looks
|
|
168021
|
+
// authoritative and is not, so the fail-open is stated rather than assumed.
|
|
168022
|
+
RES018_UNEVALUATED_FILTER: (subject, construct) => `${subject} filter is not evaluated: ${construct} is outside the metadata-filter evaluator, which decides '@'/'@@' metadata tests combined with 'not', 'and'/'&', and 'or'/'|'. The filter fails open \u2014 it is treated as pass-through and removes nothing.`,
|
|
168013
168023
|
// REQ-007 — SysML v1 → v2 migration guardrail.
|
|
168014
168024
|
MIG001_V1_KEYWORD: (keyword, v2, note) => `'${keyword}' is a SysML v1 construct, not a SysML v2 keyword. ${note} Use '${v2}'.`,
|
|
168015
168025
|
MIG002_V1_STEREOTYPE_KNOWN: (stereotype, v2, note) => `SysML v2 has no stereotypes. ${note} Replace \xAB${stereotype}\xBB with '${v2}'.`,
|
|
@@ -168017,202 +168027,200 @@ var DIAGNOSTIC_MESSAGES = {
|
|
|
168017
168027
|
};
|
|
168018
168028
|
var KEYWORD_TOOLTIPS = {
|
|
168019
168029
|
// Package / namespace
|
|
168020
|
-
"package": { kind: "both", def: "Namespace that groups model elements.", example: "package VehicleModel { ... }" },
|
|
168021
|
-
"namespace": { kind: "KerML", def: "Root namespace construct (KerML only).", example: "namespace Kernel { ... }" },
|
|
168022
|
-
"library": { kind: "both", def: "Marks a package as a reusable library.", example: "library package Utils { ... }" },
|
|
168023
|
-
"standard": { kind: "both", def: "Marks a package as a standard-library package. Should only appear in library source.", example: "standard library package ScalarValues { ... }" },
|
|
168024
|
-
"import": { kind: "both", def: "Makes members of another namespace visible in the current scope. Release syntax requires explicit visibility.", example: "private import ISQ::*;" },
|
|
168025
|
-
"alias": { kind: "both", def: "Declares a local name for an element in another namespace.", example: "alias Mass for ISQ::MassValue;" },
|
|
168026
|
-
"filter": { kind: "SysML", def: "Restricts visible members of a namespace by a Boolean expression.", example: "filter @Safety;" },
|
|
168030
|
+
"package": { kind: "both", def: "Namespace that groups model elements.", example: "package VehicleModel { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.5.1 (Packages)" },
|
|
168031
|
+
"namespace": { kind: "KerML", def: "Root namespace construct (KerML only).", example: "namespace Kernel { ... }", cite: "OMG KerML v1.0 \xA78.2.3.4.1 (Namespaces)" },
|
|
168032
|
+
"library": { kind: "both", def: "Marks a package as a reusable library.", example: "library package Utils { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.5.1 (Packages)" },
|
|
168033
|
+
"standard": { kind: "both", def: "Marks a package as a standard-library package. Should only appear in library source.", example: "standard library package ScalarValues { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.5.1 (Packages)" },
|
|
168034
|
+
"import": { kind: "both", def: "Makes members of another namespace visible in the current scope. Release syntax requires explicit visibility.", example: "private import ISQ::*;", cite: "OMG KerML v1.0 \xA78.2.3.4.2 (Imports)" },
|
|
168035
|
+
"alias": { kind: "both", def: "Declares a local name for an element in another namespace.", example: "alias Mass for ISQ::MassValue;", cite: "OMG KerML v1.0 \xA78.2.3.4.3 (Namespace Elements)" },
|
|
168036
|
+
"filter": { kind: "SysML", def: "Restricts visible members of a namespace by a Boolean expression.", example: "filter @Safety;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.5.2 (Package Elements)" },
|
|
168027
168037
|
// Visibility
|
|
168028
|
-
"public": { kind: "both", def: "Visibility: element visible to all importers." },
|
|
168029
|
-
"private": { kind: "both", def: "Visibility: element visible only in its owning namespace." },
|
|
168030
|
-
"protected": { kind: "both", def: "Visibility: element visible to specializations of the owning namespace." },
|
|
168038
|
+
"public": { kind: "both", def: "Visibility: element visible to all importers.", cite: "OMG KerML v1.0 \xA78.2.3.4.3 (Namespace Elements)" },
|
|
168039
|
+
"private": { kind: "both", def: "Visibility: element visible only in its owning namespace.", cite: "OMG KerML v1.0 \xA78.2.3.4.3 (Namespace Elements)" },
|
|
168040
|
+
"protected": { kind: "both", def: "Visibility: element visible to specializations of the owning namespace.", cite: "OMG KerML v1.0 \xA78.2.3.4.3 (Namespace Elements)" },
|
|
168031
168041
|
// Directions
|
|
168032
|
-
"in": { kind: "both", def: "Input direction for a port feature or action parameter." },
|
|
168033
|
-
"out": { kind: "both", def: "Output direction for a port feature or action parameter." },
|
|
168034
|
-
"inout": { kind: "both", def: "Bidirectional direction for a port feature or action parameter." },
|
|
168042
|
+
"in": { kind: "both", def: "Input direction for a port feature or action parameter.", cite: "OMG KerML v1.0 \xA78.2.4.3.1 (Features)" },
|
|
168043
|
+
"out": { kind: "both", def: "Output direction for a port feature or action parameter.", cite: "OMG KerML v1.0 \xA78.2.4.3.1 (Features)" },
|
|
168044
|
+
"inout": { kind: "both", def: "Bidirectional direction for a port feature or action parameter.", cite: "OMG KerML v1.0 \xA78.2.4.3.1 (Features)" },
|
|
168035
168045
|
// Definition keywords
|
|
168036
|
-
"part": { kind: "SysML", def: "Structural component with identity and internal structure. `part def` defines a reusable kind; `part` is a usage occurrence.", example: "part def Vehicle { ... } // definition\npart myCar : Vehicle; // usage" },
|
|
168037
|
-
"port": { kind: "SysML", def: "Interaction point through which a part exchanges items or signals. `port def` defines the contract; `~` conjugates directions.", example: "port def PowerPort { out item power : ElectricalPower; }" },
|
|
168038
|
-
"item": { kind: "SysML", def: "Something that flows, is exchanged, or is produced \u2014 matter, energy, data, or signals.", example: "item def Packet { attribute size : Integer; }" },
|
|
168039
|
-
"attribute": { kind: "SysML", def: "Value-only feature without identity. Use for scalars, quantities, and typed constants.", example: "attribute mass : MassValue = 1500 [kg];" },
|
|
168040
|
-
"action": { kind: "SysML", def: "Behavior step: consumes inputs, performs work, produces outputs. `action def` is reusable; `action` is a usage.", example: "action def Accelerate { in throttle : Real; out torque : Real; }" },
|
|
168041
|
-
"state": { kind: "SysML", def: "Mode a system can occupy. Supports entry/do/exit actions and transitions.", example: "state def Idle { entry action e; do action d; exit action x; }" },
|
|
168042
|
-
"calc": { kind: "SysML", def: "Pure function-like action that returns a value; no side effects.", example: "calc def Speed { in d : LengthValue; in t : TimeValue; return : SpeedValue; }" },
|
|
168043
|
-
"constraint": { kind: "SysML", def: "Formal Boolean condition that must hold. Body is a single Boolean expression.", example: "constraint def MaxMass { subject v : Vehicle; require constraint { v.mass <= 2500 [kg] } }" },
|
|
168044
|
-
"requirement": { kind: "SysML", def: "First-class machine-checkable requirement with a subject, constraints, and verify links.", example: "requirement def MassReq { subject v : Vehicle; require constraint { v.mass <= 2500 [kg] } }" },
|
|
168045
|
-
"concern": { kind: "SysML", def: "Stakeholder interest that may be addressed by requirements.", example: "concern def Safety { stakeholder s : Engineer; }" },
|
|
168046
|
-
"case": { kind: "SysML", def: "Generic case element (see analysis case, verification case, use case for specific forms).", example: "case def C { ... }" },
|
|
168047
|
-
"view": { kind: "SysML", def: "A presentation of a subset of model elements for a specific audience or purpose.", example: "view def SafetyView :> SysML::Views::View { ... }" },
|
|
168048
|
-
"viewpoint": { kind: "SysML", def: "Purpose descriptor for a set of views, specifying stakeholders and framed concerns.", example: "viewpoint def SafetyVP { stakeholder s : SafetyEngineer; }" },
|
|
168049
|
-
"rendering": { kind: "SysML", def: "Specification of how a view is presented (table, tree, diagram, etc.).", example: "rendering def TableRendering { ... }" },
|
|
168050
|
-
"metadata": { kind: "SysML", def: "Non-semantic annotation attached to model elements. Used for tagging, tooling, and cross-cutting concerns.", example: "@Safety\npart def Engine { ... }" },
|
|
168051
|
-
"enum": { kind: "SysML", def: "Enumeration definition with a set of named literal values.", example: "enum def Status { active, inactive, standby }" },
|
|
168052
|
-
"occurrence": { kind: "SysML", def: "General occurrence concept covering things with a lifetime.", example: "occurrence def Event { ... }" },
|
|
168053
|
-
"connection": { kind: "SysML", def: "A typed relationship linking two or more parts through ports.", example: "connection def PowerLink connect PowerOut to PowerIn;" },
|
|
168054
|
-
"interface": { kind: "SysML", def: "Contract for interaction between two ends, specifying port types and flow.", example: "interface def PowerInterface { end source : PowerOutPort; end sink : ~PowerOutPort; }" },
|
|
168055
|
-
"allocation": { kind: "SysML", def: "Maps a source element to a target element that realizes it.", example: "allocate functions.drive to hardware.motor;" },
|
|
168056
|
-
"flow": { kind: "SysML", def: "Item flow between source and target (material, data, energy).", example: "flow power of ElectricalPower from battery.out to motor.in;" },
|
|
168057
|
-
"succession": { kind: "SysML", def: "Temporal ordering between behaviors \u2014 source happens before target.", example: "succession first startEngine then driveForward;" },
|
|
168058
|
-
"transition": { kind: "SysML", def: "Change between states: source, optional trigger, guard, effect, and target.", example: "transition first idle accept cmd : Start then running;" },
|
|
168046
|
+
"part": { kind: "SysML", def: "Structural component with identity and internal structure. `part def` defines a reusable kind; `part` is a usage occurrence.", example: "part def Vehicle { ... } // definition\npart myCar : Vehicle; // usage", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.11 (Parts)" },
|
|
168047
|
+
"port": { kind: "SysML", def: "Interaction point through which a part exchanges items or signals. `port def` defines the contract; `~` conjugates directions.", example: "port def PowerPort { out item power : ElectricalPower; }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.12 (Ports)" },
|
|
168048
|
+
"item": { kind: "SysML", def: "Something that flows, is exchanged, or is produced \u2014 matter, energy, data, or signals.", example: "item def Packet { attribute size : Integer; }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.10 (Items)" },
|
|
168049
|
+
"attribute": { kind: "SysML", def: "Value-only feature without identity. Use for scalars, quantities, and typed constants.", example: "attribute mass : MassValue = 1500 [kg];", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.7 (Attributes)" },
|
|
168050
|
+
"action": { kind: "SysML", def: "Behavior step: consumes inputs, performs work, produces outputs. `action def` is reusable; `action` is a usage.", example: "action def Accelerate { in throttle : Real; out torque : Real; }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17 (Actions)" },
|
|
168051
|
+
"state": { kind: "SysML", def: "Mode a system can occupy. Supports entry/do/exit actions and transitions.", example: "state def Idle { entry action e; do action d; exit action x; }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.18 (States)" },
|
|
168052
|
+
"calc": { kind: "SysML", def: "Pure function-like action that returns a value; no side effects.", example: "calc def Speed { in d : LengthValue; in t : TimeValue; return : SpeedValue; }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.19 (Calculations)" },
|
|
168053
|
+
"constraint": { kind: "SysML", def: "Formal Boolean condition that must hold. Body is a single Boolean expression.", example: "constraint def MaxMass { subject v : Vehicle; require constraint { v.mass <= 2500 [kg] } }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.20 (Constraints)" },
|
|
168054
|
+
"requirement": { kind: "SysML", def: "First-class machine-checkable requirement with a subject, constraints, and verify links.", example: "requirement def MassReq { subject v : Vehicle; require constraint { v.mass <= 2500 [kg] } }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.21 (Requirements)" },
|
|
168055
|
+
"concern": { kind: "SysML", def: "Stakeholder interest that may be addressed by requirements.", example: "concern def Safety { stakeholder s : Engineer; }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.21.3 (Concerns)" },
|
|
168056
|
+
"case": { kind: "SysML", def: "Generic case element (see analysis case, verification case, use case for specific forms).", example: "case def C { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.22 (Cases)" },
|
|
168057
|
+
"view": { kind: "SysML", def: "A presentation of a subset of model elements for a specific audience or purpose.", example: "view def SafetyView :> SysML::Views::View { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.26.1 (View Definitions)" },
|
|
168058
|
+
"viewpoint": { kind: "SysML", def: "Purpose descriptor for a set of views, specifying stakeholders and framed concerns.", example: "viewpoint def SafetyVP { stakeholder s : SafetyEngineer; }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.26.3 (Viewpoints)" },
|
|
168059
|
+
"rendering": { kind: "SysML", def: "Specification of how a view is presented (table, tree, diagram, etc.).", example: "rendering def TableRendering { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.26.4 (Renderings)" },
|
|
168060
|
+
"metadata": { kind: "SysML", def: "Non-semantic annotation attached to model elements. Used for tagging, tooling, and cross-cutting concerns.", example: "@Safety\npart def Engine { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.27 (Metadata)" },
|
|
168061
|
+
"enum": { kind: "SysML", def: "Enumeration definition with a set of named literal values.", example: "enum def Status { active, inactive, standby }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.8 (Enumerations)" },
|
|
168062
|
+
"occurrence": { kind: "SysML", def: "General occurrence concept covering things with a lifetime.", example: "occurrence def Event { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.9 (Occurrences)" },
|
|
168063
|
+
"connection": { kind: "SysML", def: "A typed relationship linking two or more parts through ports.", example: "connection def PowerLink connect PowerOut to PowerIn;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.13.1 (Connection Definition and Usage)" },
|
|
168064
|
+
"interface": { kind: "SysML", def: "Contract for interaction between two ends, specifying port types and flow.", example: "interface def PowerInterface { end source : PowerOutPort; end sink : ~PowerOutPort; }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.14 (Interfaces)" },
|
|
168065
|
+
"allocation": { kind: "SysML", def: "Maps a source element to a target element that realizes it.", example: "allocate functions.drive to hardware.motor;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.15 (Allocations)" },
|
|
168066
|
+
"flow": { kind: "SysML", def: "Item flow between source and target (material, data, energy).", example: "flow power of ElectricalPower from battery.out to motor.in;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.16 (Flows)" },
|
|
168067
|
+
"succession": { kind: "SysML", def: "Temporal ordering between behaviors \u2014 source happens before target.", example: "succession first startEngine then driveForward;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.13.3 (Successions)" },
|
|
168068
|
+
"transition": { kind: "SysML", def: "Change between states: source, optional trigger, guard, effect, and target.", example: "transition first idle accept cmd : Start then running;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.18.3 (Transition Usages)" },
|
|
168059
168069
|
// Modifiers
|
|
168060
|
-
"abstract": { kind: "both", def: "Definition cannot be instantiated directly; must be specialized." },
|
|
168061
|
-
"ref": { kind: "SysML", def: "References an element owned elsewhere rather than composing it." },
|
|
168062
|
-
"derived": { kind: "both", def: "Feature value is computed from other features; not stored directly." },
|
|
168063
|
-
"readonly": { kind: "both", def: "Legacy recovery token, not a SysML/KerML Release modifier. Use SysML constant for an immutable usage." },
|
|
168064
|
-
"composite": { kind: "both", def: "Feature is compositely owned by the enclosing element (filled diamond)." },
|
|
168065
|
-
"portion": { kind: "both", def: "Feature is a temporal or spatial portion of the owner." },
|
|
168066
|
-
"var": { kind: "KerML", def: "Variable feature \u2014 value changes over time." },
|
|
168067
|
-
"const": { kind: "KerML", def: "Constant feature \u2014 value set at creation time (KerML form). Use `constant` in SysML." },
|
|
168068
|
-
"constant": { kind: "SysML", def: "Constant usage \u2014 value set at initialization, not changed afterward (SysML form)." },
|
|
168069
|
-
"ordered": { kind: "both", def: "Feature values are ordered (sequence semantics)." },
|
|
168070
|
-
"nonunique": { kind: "both", def: "Feature values may repeat (bag/multiset semantics)." },
|
|
168071
|
-
"variation": { kind: "SysML", def: "A definition offering multiple variant alternatives." },
|
|
168072
|
-
"variant": { kind: "SysML", def: "One alternative inside a variation definition." },
|
|
168073
|
-
"individual": { kind: "SysML", def: "A unique real-world object; multiplicity [1] by definition." },
|
|
168074
|
-
"snapshot": { kind: "SysML", def: "Zero-duration timeslice of an individual." },
|
|
168075
|
-
"timeslice": { kind: "SysML", def: "Bounded lifetime segment of an individual." },
|
|
168076
|
-
"parallel": { kind: "SysML", def: "State or region with concurrent sub-states (orthogonal regions)." },
|
|
168077
|
-
"end": { kind: "both", def: "Endpoint feature in a connection or interface definition." },
|
|
168070
|
+
"abstract": { kind: "both", def: "Definition cannot be instantiated directly; must be specialized.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.6.1 (Definitions)" },
|
|
168071
|
+
"ref": { kind: "SysML", def: "References an element owned elsewhere rather than composing it.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.6.3 (Reference Usages)" },
|
|
168072
|
+
"derived": { kind: "both", def: "Feature value is computed from other features; not stored directly.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.6.2 (Usages)" },
|
|
168073
|
+
"readonly": { kind: "both", def: "Legacy recovery token, not a SysML/KerML Release modifier. Use SysML constant for an immutable usage.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.6.2 (Usages)" },
|
|
168074
|
+
"composite": { kind: "both", def: "Feature is compositely owned by the enclosing element (filled diamond).", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.6.2 (Usages)" },
|
|
168075
|
+
"portion": { kind: "both", def: "Feature is a temporal or spatial portion of the owner.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.6.2 (Usages)" },
|
|
168076
|
+
"var": { kind: "KerML", def: "Variable feature \u2014 value changes over time.", cite: "OMG KerML v1.0 \xA78.2.4.3.1 (Features)" },
|
|
168077
|
+
"const": { kind: "KerML", def: "Constant feature \u2014 value set at creation time (KerML form). Use `constant` in SysML.", cite: "OMG KerML v1.0 \xA78.2.4.3.1 (Features)" },
|
|
168078
|
+
"constant": { kind: "SysML", def: "Constant usage \u2014 value set at initialization, not changed afterward (SysML form).", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.6.2 (Usages)" },
|
|
168079
|
+
"ordered": { kind: "both", def: "Feature values are ordered (sequence semantics).", cite: "OMG KerML v1.0 \xA78.2.5.11 (Multiplicities)" },
|
|
168080
|
+
"nonunique": { kind: "both", def: "Feature values may repeat (bag/multiset semantics).", cite: "OMG KerML v1.0 \xA78.2.5.11 (Multiplicities)" },
|
|
168081
|
+
"variation": { kind: "SysML", def: "A definition offering multiple variant alternatives.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.6.1 (Definitions)" },
|
|
168082
|
+
"variant": { kind: "SysML", def: "One alternative inside a variation definition.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.6.4 (Body Elements)" },
|
|
168083
|
+
"individual": { kind: "SysML", def: "A unique real-world object; multiplicity [1] by definition.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.9.1 (Occurrence Definitions)" },
|
|
168084
|
+
"snapshot": { kind: "SysML", def: "Zero-duration timeslice of an individual.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.9.2 (Occurrence Usages)" },
|
|
168085
|
+
"timeslice": { kind: "SysML", def: "Bounded lifetime segment of an individual.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.9.2 (Occurrence Usages)" },
|
|
168086
|
+
"parallel": { kind: "SysML", def: "State or region with concurrent sub-states (orthogonal regions).", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.18.1 (State Definitions)" },
|
|
168087
|
+
"end": { kind: "both", def: "Endpoint feature in a connection or interface definition.", cite: "OMG KerML v1.0 \xA78.2.5.5.1 (Connectors)" },
|
|
168078
168088
|
// KerML kernel keywords
|
|
168079
|
-
"type": { kind: "KerML", def: "Fundamental KerML classifier type. In user `.sysml` code, prefer `part def`, `attribute def`, etc." },
|
|
168080
|
-
"class": { kind: "KerML", def: "KerML class (has identity). In `.sysml`, prefer `part def`." },
|
|
168081
|
-
"classifier": { kind: "KerML", def: "KerML base classifier. In `.sysml`, prefer `part def`." },
|
|
168082
|
-
"struct": { kind: "KerML", def: "KerML structure (data-value, no identity). In `.sysml`, prefer `attribute def`." },
|
|
168083
|
-
"datatype": { kind: "KerML", def: "KerML data type (no identity). In `.sysml`, prefer `attribute def`." },
|
|
168084
|
-
"metaclass": { kind: "KerML", def: "KerML metaclass for modeling language extension points." },
|
|
168085
|
-
"assoc": { kind: "KerML", def: "KerML association. In `.sysml`, prefer `connection def`." },
|
|
168086
|
-
"feature": { kind: "KerML", def: "Generic KerML feature. In `.sysml`, prefer `part`, `attribute`, `port`, etc." },
|
|
168087
|
-
"function": { kind: "KerML", def: "KerML function (pure computation). In `.sysml`, prefer `calc def`." },
|
|
168088
|
-
"predicate": { kind: "KerML", def: "KerML Boolean function. In `.sysml`, prefer `constraint def`." },
|
|
168089
|
-
"step": { kind: "KerML", def: "KerML step (behavior invocation)." },
|
|
168090
|
-
"behavior": { kind: "KerML", def: "KerML behavior classifier. In `.sysml`, prefer `action def`." },
|
|
168091
|
-
"interaction": { kind: "KerML", def: "KerML interaction (multi-party behavior)." },
|
|
168092
|
-
"expr": { kind: "KerML", def: "KerML expression feature." },
|
|
168089
|
+
"type": { kind: "KerML", def: "Fundamental KerML classifier type. In user `.sysml` code, prefer `part def`, `attribute def`, etc.", cite: "OMG KerML v1.0 \xA78.2.4.1.1 (Types)" },
|
|
168090
|
+
"class": { kind: "KerML", def: "KerML class (has identity). In `.sysml`, prefer `part def`.", cite: "OMG KerML v1.0 \xA78.2.5.2 (Classes)" },
|
|
168091
|
+
"classifier": { kind: "KerML", def: "KerML base classifier. In `.sysml`, prefer `part def`.", cite: "OMG KerML v1.0 \xA78.2.4.2.1 (Classifiers)" },
|
|
168092
|
+
"struct": { kind: "KerML", def: "KerML structure (data-value, no identity). In `.sysml`, prefer `attribute def`.", cite: "OMG KerML v1.0 \xA78.2.5.3 (Structures)" },
|
|
168093
|
+
"datatype": { kind: "KerML", def: "KerML data type (no identity). In `.sysml`, prefer `attribute def`.", cite: "OMG KerML v1.0 \xA78.2.5.1 (Data Types)" },
|
|
168094
|
+
"metaclass": { kind: "KerML", def: "KerML metaclass for modeling language extension points.", cite: "OMG KerML v1.0 \xA78.2.5.12 (Metadata)" },
|
|
168095
|
+
"assoc": { kind: "KerML", def: "KerML association. In `.sysml`, prefer `connection def`.", cite: "OMG KerML v1.0 \xA78.2.5.4 (Associations)" },
|
|
168096
|
+
"feature": { kind: "KerML", def: "Generic KerML feature. In `.sysml`, prefer `part`, `attribute`, `port`, etc.", cite: "OMG KerML v1.0 \xA78.2.4.3.1 (Features)" },
|
|
168097
|
+
"function": { kind: "KerML", def: "KerML function (pure computation). In `.sysml`, prefer `calc def`.", cite: "OMG KerML v1.0 \xA78.2.5.7.1 (Functions)" },
|
|
168098
|
+
"predicate": { kind: "KerML", def: "KerML Boolean function. In `.sysml`, prefer `constraint def`.", cite: "OMG KerML v1.0 \xA78.2.5.7.3 (Predicates)" },
|
|
168099
|
+
"step": { kind: "KerML", def: "KerML step (behavior invocation).", cite: "OMG KerML v1.0 \xA78.2.5.6.2 (Steps)" },
|
|
168100
|
+
"behavior": { kind: "KerML", def: "KerML behavior classifier. In `.sysml`, prefer `action def`.", cite: "OMG KerML v1.0 \xA78.2.5.6.1 (Behaviors)" },
|
|
168101
|
+
"interaction": { kind: "KerML", def: "KerML interaction (multi-party behavior).", cite: "OMG KerML v1.0 \xA78.2.5.9.1 (Interactions)" },
|
|
168102
|
+
"expr": { kind: "KerML", def: "KerML expression feature.", cite: "OMG KerML v1.0 \xA78.2.5.7.2 (Expressions)" },
|
|
168093
168103
|
// Relationship keywords
|
|
168094
|
-
"specializes": { kind: "both", def: "Keyword form of `:>` specialization relationship." },
|
|
168095
|
-
"redefines": { kind: "both", def: "Keyword form of `:>>` redefinition relationship." },
|
|
168096
|
-
"subsets": { kind: "both", def: "Keyword form of `:>` subsetting on feature usages." },
|
|
168097
|
-
"conjugates": { kind: "both", def: "Keyword form of `~` conjugation on port types." },
|
|
168098
|
-
"disjoint": { kind: "both", def: "Used in `disjoint from` to assert two types share no instances." },
|
|
168099
|
-
"unions": { kind: "KerML", def: "Feature unions over other features." },
|
|
168100
|
-
"intersects": { kind: "KerML", def: "Feature intersection." },
|
|
168101
|
-
"differences": { kind: "KerML", def: "Feature set difference." },
|
|
168102
|
-
"chains": { kind: "KerML", def: "Feature chaining through a path of features." },
|
|
168103
|
-
"inverting": { kind: "KerML", def: "Feature that is the inverse of another." },
|
|
168104
|
+
"specializes": { kind: "both", def: "Keyword form of `:>` specialization relationship.", cite: "OMG KerML v1.0 \xA78.2.4.1.2 (Specialization)" },
|
|
168105
|
+
"redefines": { kind: "both", def: "Keyword form of `:>>` redefinition relationship.", cite: "OMG KerML v1.0 \xA78.2.4.3.4 (Redefinition)" },
|
|
168106
|
+
"subsets": { kind: "both", def: "Keyword form of `:>` subsetting on feature usages.", cite: "OMG KerML v1.0 \xA78.2.4.3.3 (Subsetting)" },
|
|
168107
|
+
"conjugates": { kind: "both", def: "Keyword form of `~` conjugation on port types.", cite: "OMG KerML v1.0 \xA78.2.4.1.3 (Conjugation)" },
|
|
168108
|
+
"disjoint": { kind: "both", def: "Used in `disjoint from` to assert two types share no instances.", cite: "OMG KerML v1.0 \xA78.2.4.1.4 (Disjoining)" },
|
|
168109
|
+
"unions": { kind: "KerML", def: "Feature unions over other features.", cite: "OMG KerML v1.0 \xA78.2.4.1.5 (Unioning, Intersecting, and Differencing)" },
|
|
168110
|
+
"intersects": { kind: "KerML", def: "Feature intersection.", cite: "OMG KerML v1.0 \xA78.2.4.1.5 (Unioning, Intersecting, and Differencing)" },
|
|
168111
|
+
"differences": { kind: "KerML", def: "Feature set difference.", cite: "OMG KerML v1.0 \xA78.2.4.1.5 (Unioning, Intersecting, and Differencing)" },
|
|
168112
|
+
"chains": { kind: "KerML", def: "Feature chaining through a path of features.", cite: "OMG KerML v1.0 \xA78.2.4.3.5 (Feature Chaining)" },
|
|
168113
|
+
"inverting": { kind: "KerML", def: "Feature that is the inverse of another.", cite: "OMG KerML v1.0 \xA78.2.4.3.6 (Feature Inverting)" },
|
|
168104
168114
|
// Behavioral keywords
|
|
168105
|
-
"perform": { kind: "SysML", def: "Part performs (executes) an action usage.", example: "perform action drive;" },
|
|
168106
|
-
"exhibit": { kind: "SysML", def: "Part exhibits (runs) a state machine.", example: "exhibit state lifecycle;" },
|
|
168107
|
-
"include": { kind: "SysML", def: "Use case always includes another use case.", example: "include useCase Authenticate;" },
|
|
168108
|
-
"satisfy": { kind: "SysML", def: "Element satisfies a requirement.", example: "satisfy MassReq by myCar;" },
|
|
168109
|
-
"verify": { kind: "SysML", def: "Verification case verifies a requirement.", example: "verify MassReq;" },
|
|
168110
|
-
"require": { kind: "SysML", def: "Normative constraint inside a requirement definition.", example: "require constraint { mass <= 2500 [kg] }" },
|
|
168111
|
-
"assume": { kind: "SysML", def: "Precondition inside a requirement (if false, req not violated).", example: "assume constraint { isLoaded }" },
|
|
168112
|
-
"assert": { kind: "SysML", def: "Asserts that a constraint holds in the current scope.", example: "assert constraint { v.mass <= 2500 [kg] }" },
|
|
168113
|
-
"subject": { kind: "SysML", def: "The element that a requirement, use case, or case constrains. Exactly one per definition.", example: "subject v : Vehicle;" },
|
|
168114
|
-
"actor": { kind: "SysML", def: "An active external participant in a use case or case." },
|
|
168115
|
-
"stakeholder": { kind: "SysML", def: "An interested party in a concern or viewpoint." },
|
|
168116
|
-
"objective": { kind: "SysML", def: "Goal of an analysis or verification case.", example: "objective obj { verify MassReq; }" },
|
|
168117
|
-
"frame": { kind: "SysML", def: "Frames a concern in a requirement or viewpoint.", example: "frame concern Safety;" },
|
|
168118
|
-
"expose": { kind: "SysML", def: "Makes selected model elements visible in a view.", example: "expose myCar.engine;" },
|
|
168119
|
-
"render": { kind: "SysML", def: "Specifies how a view is rendered (table, tree, diagram).", example: "render asTable;" },
|
|
168115
|
+
"perform": { kind: "SysML", def: "Part performs (executes) an action usage.", example: "perform action drive;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.2 (Action Usages)" },
|
|
168116
|
+
"exhibit": { kind: "SysML", def: "Part exhibits (runs) a state machine.", example: "exhibit state lifecycle;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.18.2 (State Usages)" },
|
|
168117
|
+
"include": { kind: "SysML", def: "Use case always includes another use case.", example: "include useCase Authenticate;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.25 (Use Cases)" },
|
|
168118
|
+
"satisfy": { kind: "SysML", def: "Element satisfies a requirement.", example: "satisfy MassReq by myCar;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.21.2 (Requirement Usages)" },
|
|
168119
|
+
"verify": { kind: "SysML", def: "Verification case verifies a requirement.", example: "verify MassReq;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.24 (Verification Cases)" },
|
|
168120
|
+
"require": { kind: "SysML", def: "Normative constraint inside a requirement definition.", example: "require constraint { mass <= 2500 [kg] }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.21.1 (Requirement Definitions)" },
|
|
168121
|
+
"assume": { kind: "SysML", def: "Precondition inside a requirement (if false, req not violated).", example: "assume constraint { isLoaded }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.21.1 (Requirement Definitions)" },
|
|
168122
|
+
"assert": { kind: "SysML", def: "Asserts that a constraint holds in the current scope.", example: "assert constraint { v.mass <= 2500 [kg] }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.20 (Constraints)" },
|
|
168123
|
+
"subject": { kind: "SysML", def: "The element that a requirement, use case, or case constrains. Exactly one per definition.", example: "subject v : Vehicle;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.22 (Cases)" },
|
|
168124
|
+
"actor": { kind: "SysML", def: "An active external participant in a use case or case.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.22 (Cases)" },
|
|
168125
|
+
"stakeholder": { kind: "SysML", def: "An interested party in a concern or viewpoint.", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.21.3 (Concerns)" },
|
|
168126
|
+
"objective": { kind: "SysML", def: "Goal of an analysis or verification case.", example: "objective obj { verify MassReq; }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.22 (Cases)" },
|
|
168127
|
+
"frame": { kind: "SysML", def: "Frames a concern in a requirement or viewpoint.", example: "frame concern Safety;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.21.3 (Concerns)" },
|
|
168128
|
+
"expose": { kind: "SysML", def: "Makes selected model elements visible in a view.", example: "expose myCar.engine;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.26.2 (View Usages)" },
|
|
168129
|
+
"render": { kind: "SysML", def: "Specifies how a view is rendered (table, tree, diagram).", example: "render asTable;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.26.4 (Renderings)" },
|
|
168120
168130
|
// Behavioral control
|
|
168121
|
-
"entry": { kind: "SysML", def: "Action executed when entering a state.", example: "entry action initialize;" },
|
|
168122
|
-
"do": { kind: "SysML", def: "Action executed while in a state.", example: "do action monitor;" },
|
|
168123
|
-
"exit": { kind: "SysML", def: "Action executed when leaving a state.", example: "exit action cleanup;" },
|
|
168124
|
-
"first": { kind: "SysML", def: "Source state of a transition, or first step in a sequence.", example: "first idle" },
|
|
168125
|
-
"then": { kind: "SysML", def: "Target state of a transition, or next step in a sequence.", example: "then running" },
|
|
168126
|
-
"accept": { kind: "SysML", def: "Transition trigger \u2014 waits for an event, time, or change.", example: "accept cmd : CommandSignal" },
|
|
168127
|
-
"send": { kind: "SysML", def: "Sends an item or signal through a port.", example: "send statusUpdate via outputPort;" },
|
|
168128
|
-
"if": { kind: "SysML", def: "Guard condition in a transition or conditional expression.", example: "if speed > 60 [km/h]" },
|
|
168129
|
-
"while": { kind: "SysML", def: "Looping control flow \u2014 repeat while condition is true.", example: "while running loop { ... }" },
|
|
168130
|
-
"for": { kind: "SysML", def: "Iteration over a collection.", example: "for x in wheels loop { ... }" },
|
|
168131
|
-
"return": { kind: "SysML", def: "Return value declaration in a `calc def`.", example: "return result : SpeedValue;" },
|
|
168132
|
-
"merge": { kind: "SysML", def: "Action flow merge node \u2014 multiple incoming, one outgoing.", example: "merge m;" },
|
|
168133
|
-
"decide": { kind: "SysML", def: "Action flow decision (fork) node \u2014 one incoming, multiple guarded outgoing.", example: "decide d;" },
|
|
168134
|
-
"join": { kind: "SysML", def: "Action flow join node \u2014 multiple incoming, one outgoing (all must complete).", example: "join j;" },
|
|
168135
|
-
"fork": { kind: "SysML", def: "Action flow fork node \u2014 one incoming, multiple concurrent outgoing.", example: "fork f;" },
|
|
168136
|
-
"terminate": { kind: "SysML", def: "Terminates the enclosing action or behavior.", example: "terminate;" },
|
|
168137
|
-
"assign": { kind: "SysML", def: "Assignment action \u2014 sets a variable to an expression value.", example: "assign x := expr;" },
|
|
168131
|
+
"entry": { kind: "SysML", def: "Action executed when entering a state.", example: "entry action initialize;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.18.2 (State Usages)" },
|
|
168132
|
+
"do": { kind: "SysML", def: "Action executed while in a state.", example: "do action monitor;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.18.2 (State Usages)" },
|
|
168133
|
+
"exit": { kind: "SysML", def: "Action executed when leaving a state.", example: "exit action cleanup;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.18.2 (State Usages)" },
|
|
168134
|
+
"first": { kind: "SysML", def: "Source state of a transition, or first step in a sequence.", example: "first idle", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.8 (Action Successions)" },
|
|
168135
|
+
"then": { kind: "SysML", def: "Target state of a transition, or next step in a sequence.", example: "then running", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.8 (Action Successions)" },
|
|
168136
|
+
"accept": { kind: "SysML", def: "Transition trigger \u2014 waits for an event, time, or change.", example: "accept cmd : CommandSignal", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.4 (Send and Accept Action Usages)" },
|
|
168137
|
+
"send": { kind: "SysML", def: "Sends an item or signal through a port.", example: "send statusUpdate via outputPort;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.4 (Send and Accept Action Usages)" },
|
|
168138
|
+
"if": { kind: "SysML", def: "Guard condition in a transition or conditional expression.", example: "if speed > 60 [km/h]", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.7 (Structured Control Action Usages)" },
|
|
168139
|
+
"while": { kind: "SysML", def: "Looping control flow \u2014 repeat while condition is true.", example: "while running loop { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.7 (Structured Control Action Usages)" },
|
|
168140
|
+
"for": { kind: "SysML", def: "Iteration over a collection.", example: "for x in wheels loop { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.7 (Structured Control Action Usages)" },
|
|
168141
|
+
"return": { kind: "SysML", def: "Return value declaration in a `calc def`.", example: "return result : SpeedValue;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.19 (Calculations)" },
|
|
168142
|
+
"merge": { kind: "SysML", def: "Action flow merge node \u2014 multiple incoming, one outgoing.", example: "merge m;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.3 (Control Nodes)" },
|
|
168143
|
+
"decide": { kind: "SysML", def: "Action flow decision (fork) node \u2014 one incoming, multiple guarded outgoing.", example: "decide d;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.3 (Control Nodes)" },
|
|
168144
|
+
"join": { kind: "SysML", def: "Action flow join node \u2014 multiple incoming, one outgoing (all must complete).", example: "join j;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.3 (Control Nodes)" },
|
|
168145
|
+
"fork": { kind: "SysML", def: "Action flow fork node \u2014 one incoming, multiple concurrent outgoing.", example: "fork f;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.3 (Control Nodes)" },
|
|
168146
|
+
"terminate": { kind: "SysML", def: "Terminates the enclosing action or behavior.", example: "terminate;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.6 (Terminate Action Usages)" },
|
|
168147
|
+
"assign": { kind: "SysML", def: "Assignment action \u2014 sets a variable to an expression value.", example: "assign x := expr;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.17.5 (Assignment Action Usages)" },
|
|
168138
168148
|
// Connect/bind/flow
|
|
168139
|
-
"connect": { kind: "SysML", def: "Creates a connector between two ends.", example: "connect engine.out to wheels.in;" },
|
|
168140
|
-
"bind": { kind: "SysML", def: "Shorthand binding connector \u2014 two ends share the same value.", example: "bind outer.power = inner.supply;" },
|
|
168141
|
-
"binding": { kind: "SysML", def: "Named binding connector declaration.", example: "binding link of supply = demand;" },
|
|
168142
|
-
"allocate": { kind: "SysML", def: "Allocates a logical element to a physical element.", example: "allocate func.drive to hw.motor;" },
|
|
168149
|
+
"connect": { kind: "SysML", def: "Creates a connector between two ends.", example: "connect engine.out to wheels.in;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.13.1 (Connection Definition and Usage)" },
|
|
168150
|
+
"bind": { kind: "SysML", def: "Shorthand binding connector \u2014 two ends share the same value.", example: "bind outer.power = inner.supply;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.13.2 (Binding Connectors)" },
|
|
168151
|
+
"binding": { kind: "SysML", def: "Named binding connector declaration.", example: "binding link of supply = demand;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.13.2 (Binding Connectors)" },
|
|
168152
|
+
"allocate": { kind: "SysML", def: "Allocates a logical element to a physical element.", example: "allocate func.drive to hw.motor;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.15 (Allocations)" },
|
|
168143
168153
|
// Doc/comment/rep
|
|
168144
|
-
"doc": { kind: "both", def: "Modeled documentation attached to the next element (not discarded trivia).", example: "doc /* This part models the engine. */" },
|
|
168145
|
-
"comment": { kind: "both", def: "Modeled comment with an optional target.", example: "comment about myCar /* important */ ;" },
|
|
168146
|
-
"rep": { kind: "both", def: "Modeled textual representation in an external language.", example: 'rep vehicleView language "html" /* <b>Vehicle</b> */ ;' },
|
|
168147
|
-
"language": { kind: "both", def: "Identifies the external language of a `rep` body.", example: 'rep r language "markdown" /* ... */ ;' },
|
|
168148
|
-
"about": { kind: "both", def: "Attaches a `comment` or annotation to a named target.", example: "comment about myCar /* ... */ ;" },
|
|
168154
|
+
"doc": { kind: "both", def: "Modeled documentation attached to the next element (not discarded trivia).", example: "doc /* This part models the engine. */", cite: "OMG KerML v1.0 \xA78.2.3.3.2 (Comments and Documentation)" },
|
|
168155
|
+
"comment": { kind: "both", def: "Modeled comment with an optional target.", example: "comment about myCar /* important */ ;", cite: "OMG KerML v1.0 \xA78.2.3.3.2 (Comments and Documentation)" },
|
|
168156
|
+
"rep": { kind: "both", def: "Modeled textual representation in an external language.", example: 'rep vehicleView language "html" /* <b>Vehicle</b> */ ;', cite: "OMG KerML v1.0 \xA78.2.3.3.3 (Textual Representation)" },
|
|
168157
|
+
"language": { kind: "both", def: "Identifies the external language of a `rep` body.", example: 'rep r language "markdown" /* ... */ ;', cite: "OMG KerML v1.0 \xA78.2.3.3.3 (Textual Representation)" },
|
|
168158
|
+
"about": { kind: "both", def: "Attaches a `comment` or annotation to a named target.", example: "comment about myCar /* ... */ ;", cite: "OMG KerML v1.0 \xA78.2.3.3.1 (Annotations)" },
|
|
168149
168159
|
// Expression keywords
|
|
168150
|
-
"and": { kind: "both", def: "Boolean conjunction (lower precedence than `&`). Do NOT use `&&`.", example: "isActive and isLoaded" },
|
|
168151
|
-
"or": { kind: "both", def: "Boolean disjunction. Do NOT use `||`.", example: "isFull or isEmpty" },
|
|
168152
|
-
"xor": { kind: "both", def: "Boolean exclusive-or.", example: "a xor b" },
|
|
168153
|
-
"not": { kind: "both", def: "Boolean negation. Do NOT use `!`.", example: "not isActive" },
|
|
168154
|
-
"implies": { kind: "both", def: "Logical implication (\u2192): `a implies b` is false only when a is true and b is false.", example: "isRunning implies hasPower" },
|
|
168155
|
-
"istype": { kind: "both", def: "Classification test \u2014 is the value an instance of this type?", example: "x istype Vehicle" },
|
|
168156
|
-
"hastype": { kind: "both", def: "Type check \u2014 does the value have exactly this type?", example: "x hastype Car" },
|
|
168157
|
-
"as": { kind: "both", def: "Type cast expression.", example: "x as Car" },
|
|
168158
|
-
"meta": { kind: "both", def: "Metadata access expression.", example: "x meta @Owner" },
|
|
168159
|
-
"null": { kind: "both", def: "The null (no-value) literal.", example: "if x == null then ..." },
|
|
168160
|
-
"true": { kind: "both", def: "Boolean literal true.", example: "attribute isLoaded : Boolean = true;" },
|
|
168161
|
-
"false": { kind: "both", def: "Boolean literal false.", example: "attribute isLoaded : Boolean = false;" },
|
|
168162
|
-
"new": { kind: "both", def: "Creates a new instance of the specified type.", example: "new Vehicle { ... }" }
|
|
168160
|
+
"and": { kind: "both", def: "Boolean conjunction (lower precedence than `&`). Do NOT use `&&`.", example: "isActive and isLoaded", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168161
|
+
"or": { kind: "both", def: "Boolean disjunction. Do NOT use `||`.", example: "isFull or isEmpty", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168162
|
+
"xor": { kind: "both", def: "Boolean exclusive-or.", example: "a xor b", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168163
|
+
"not": { kind: "both", def: "Boolean negation. Do NOT use `!`.", example: "not isActive", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168164
|
+
"implies": { kind: "both", def: "Logical implication (\u2192): `a implies b` is false only when a is true and b is false.", example: "isRunning implies hasPower", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168165
|
+
"istype": { kind: "both", def: "Classification test \u2014 is the value an instance of this type?", example: "x istype Vehicle", cite: "OMG KerML v1.0 \xA78.2.5.8.2 (Primary Expressions)" },
|
|
168166
|
+
"hastype": { kind: "both", def: "Type check \u2014 does the value have exactly this type?", example: "x hastype Car", cite: "OMG KerML v1.0 \xA78.2.5.8.2 (Primary Expressions)" },
|
|
168167
|
+
"as": { kind: "both", def: "Type cast expression.", example: "x as Car", cite: "OMG KerML v1.0 \xA78.2.5.8.2 (Primary Expressions)" },
|
|
168168
|
+
"meta": { kind: "both", def: "Metadata access expression.", example: "x meta @Owner", cite: "OMG KerML v1.0 \xA78.2.5.8.2 (Primary Expressions)" },
|
|
168169
|
+
"null": { kind: "both", def: "The null (no-value) literal.", example: "if x == null then ...", cite: "OMG KerML v1.0 \xA78.2.5.8.3 (Base Expressions)" },
|
|
168170
|
+
"true": { kind: "both", def: "Boolean literal true.", example: "attribute isLoaded : Boolean = true;", cite: "OMG KerML v1.0 \xA78.2.5.8.4 (Literal Expressions)" },
|
|
168171
|
+
"false": { kind: "both", def: "Boolean literal false.", example: "attribute isLoaded : Boolean = false;", cite: "OMG KerML v1.0 \xA78.2.5.8.4 (Literal Expressions)" },
|
|
168172
|
+
"new": { kind: "both", def: "Creates a new instance of the specified type.", example: "new Vehicle { ... }", cite: "OMG KerML v1.0 \xA78.2.5.8.3 (Base Expressions)" }
|
|
168163
168173
|
};
|
|
168164
168174
|
var MULTI_WORD_KEYWORD_TOOLTIPS = {
|
|
168165
|
-
"part def": { kind: "SysML", def: "Definition of a reusable structural part kind.", example: "part def Vehicle { ... }" },
|
|
168166
|
-
"port def": { kind: "SysML", def: "Definition of a reusable port contract.", example: "port def PowerPort { out item power; }" },
|
|
168167
|
-
"item def": { kind: "SysML", def: "Definition of an item kind that can flow or be exchanged.", example: "item def Packet;" },
|
|
168168
|
-
"attribute def": { kind: "SysML", def: "Definition of a reusable value type or attribute kind.", example: "attribute def Mass;" },
|
|
168169
|
-
"analysis case": { kind: "SysML", def: "Legacy recovery spelling for an analysis case; Release syntax omits case.", example: "analysis def MassRollup { ... }" },
|
|
168170
|
-
"verification case": { kind: "SysML", def: "Legacy recovery spelling for a verification case; Release syntax omits case.", example: "verification def CrashTest { ... }" },
|
|
168171
|
-
"use case": { kind: "SysML", def: "Case describing how actors use a subject to reach a goal.", example: "use case def DriveToWork { actor driver; }" },
|
|
168172
|
-
"succession flow": { kind: "SysML", def: "Flow with temporal succession semantics between source and target.", example: "succession flow fuel from tank to engine;" }
|
|
168175
|
+
"part def": { kind: "SysML", def: "Definition of a reusable structural part kind.", example: "part def Vehicle { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.11 (Parts)" },
|
|
168176
|
+
"port def": { kind: "SysML", def: "Definition of a reusable port contract.", example: "port def PowerPort { out item power; }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.12 (Ports)" },
|
|
168177
|
+
"item def": { kind: "SysML", def: "Definition of an item kind that can flow or be exchanged.", example: "item def Packet;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.10 (Items)" },
|
|
168178
|
+
"attribute def": { kind: "SysML", def: "Definition of a reusable value type or attribute kind.", example: "attribute def Mass;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.7 (Attributes)" },
|
|
168179
|
+
"analysis case": { kind: "SysML", def: "Legacy recovery spelling for an analysis case; Release syntax omits case.", example: "analysis def MassRollup { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.23 (Analysis Cases)" },
|
|
168180
|
+
"verification case": { kind: "SysML", def: "Legacy recovery spelling for a verification case; Release syntax omits case.", example: "verification def CrashTest { ... }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.24 (Verification Cases)" },
|
|
168181
|
+
"use case": { kind: "SysML", def: "Case describing how actors use a subject to reach a goal.", example: "use case def DriveToWork { actor driver; }", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.25 (Use Cases)" },
|
|
168182
|
+
"succession flow": { kind: "SysML", def: "Flow with temporal succession semantics between source and target.", example: "succession flow fuel from tank to engine;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.16 (Flows)" }
|
|
168173
168183
|
};
|
|
168174
168184
|
var OPERATOR_TOOLTIPS = {
|
|
168175
|
-
":": { desc: "**Typing** \u2014 binds a usage to a type (`defined by` in SysML, `typed by` in KerML).", precedence: 0, example: "part myCar : Vehicle;", cite: "OMG
|
|
168176
|
-
":>": { desc: "**Specialization** (on defs) / **Subsetting** (on features) \u2014 target specializes or subsets the named element.", precedence: 0, example: "part def Car :> Vehicle;", cite: "OMG
|
|
168177
|
-
":>>": { desc: "**Redefinition** \u2014 feature narrows or overrides an inherited feature.", precedence: 0, example: "attribute :>> mass = 1500 [kg];", cite: "OMG
|
|
168178
|
-
"::>": { desc: "**Reference subsetting** \u2014 used on connector ends and view exposures to reference-subset a feature.", precedence: 0, example: "end e ::> vehicle.engine;", cite: "OMG
|
|
168179
|
-
"=>": { desc: "**Cross-subsetting** \u2014 connector end cross-subsets a feature of the connector type.", precedence: 0, example: "connection c ::> myConn { end ::> src => myConn.source; }", cite: "OMG
|
|
168180
|
-
"~": { desc: "**Conjugation** \u2014 flips the directions of all port features. Common on port typing: `port p : ~PowerOut;`.", precedence: 0, example: "port supply : ~PowerOutPort;", cite: "OMG
|
|
168181
|
-
"::": { desc: "**Namespace separator** \u2014 descends into a package namespace (`Pkg::Member`).", precedence: 0, example: "import ISQ::MassValue;", cite: "OMG
|
|
168182
|
-
"::*": { desc: "**Namespace wildcard** \u2014 imports all visible members of a namespace.", precedence: 0, example: "private import ISQ::*;", cite: "OMG
|
|
168183
|
-
"::**": { desc: "**Recursive import** \u2014 imports all visible members recursively from nested namespaces.", precedence: 0, example: "private import Pkg::*::**;", cite: "OMG
|
|
168184
|
-
".": { desc: "**Feature access** \u2014 member path inside an expression (`vehicle.body.mass`). Do NOT use `.` to descend into packages; use `::`.", precedence: 18, example: "vehicle.body.mass <= 2500 [kg]", cite: "OMG
|
|
168185
|
-
".?": { desc: "**Null-safe feature access** \u2014 like `.` but returns null if the receiver is null.", precedence: 18, example: "vehicle.?engine.torque", cite: "OMG
|
|
168186
|
-
"->": { desc: "**Collection / library invocation** \u2014 invokes a library or collection function on the receiver.", precedence: 18, example: "wheels->size() // number of wheels\nwheels->forAll { in w : Wheel | w.pressure >= 2.5 }", cite: "OMG
|
|
168187
|
-
"#(": { desc: "**Indexed access** \u2014 one-based index access on an ordered sequence.", precedence: 18, example: "wheels#(1).pressure // first wheel", cite: "OMG
|
|
168188
|
-
"**": { desc: "**Exponentiation** operator (precedence 16).", precedence: 16, example: "x ** 2 // x squared", cite: "OMG
|
|
168189
|
-
"^": { desc: "**Exponentiation** operator (same as `**`, precedence 16).", precedence: 16, example: "x ^ 2", cite: "OMG
|
|
168190
|
-
"*": { desc: "**Multiplication** (precedence 15).", precedence: 15, example: "mass * acceleration", cite: "OMG
|
|
168191
|
-
"/": { desc: "**Division** (precedence 15).", precedence: 15, example: "distance / time", cite: "OMG
|
|
168192
|
-
"%": { desc: "**Modulo** / remainder (precedence 15).", precedence: 15, example: "n % 2 == 0 // even", cite: "OMG
|
|
168193
|
-
"+": { desc: "**Addition** (precedence 14) or unary plus (precedence 17).", precedence: 14, example: "a + b", cite: "OMG
|
|
168194
|
-
"-": { desc: "**Subtraction** (precedence 14) or unary minus (precedence 17).", precedence: 14, example: "a - b", cite: "OMG
|
|
168195
|
-
"..": { desc: "**Range** expression \u2014 inclusive integer or quantity range.", precedence: 13, example: "0..9 // values 0 through 9", cite: "OMG
|
|
168196
|
-
"<": { desc: "**Less than** comparison (precedence 12).", precedence: 12, example: "mass < 2500 [kg]", cite: "OMG
|
|
168197
|
-
"<=": { desc: "**Less than or equal** comparison (precedence 12).", precedence: 12, example: "speed <= 120 [km/h]", cite: "OMG
|
|
168198
|
-
">": { desc: "**Greater than** comparison (precedence 12).", precedence: 12, example: "pressure > 0 [Pa]", cite: "OMG
|
|
168199
|
-
">=": { desc: "**Greater than or equal** comparison (precedence 12).", precedence: 12, example: "charge >= 20 [%]", cite: "OMG
|
|
168200
|
-
"==": { desc: "**Value equality** (precedence 11). Tests whether two values are equal. For binding/assignment use `=`.", precedence: 11, example: 'status == "active"', cite: "OMG
|
|
168201
|
-
"!=": { desc: "**Value inequality** (precedence 11).", precedence: 11, example: "mode != null", cite: "OMG
|
|
168202
|
-
"===": { desc: "**Identity equality** \u2014 tests that two references point to the same object (precedence 11).", precedence: 11, example: "a === b", cite: "OMG
|
|
168203
|
-
"!==": { desc: "**Identity inequality** (precedence 11).", precedence: 11, example: "a !== b", cite: "OMG
|
|
168204
|
-
"&": { desc: "**Bitwise / Boolean and** (lower precedence than comparison, precedence 9). Prefer `and` for Boolean logic.", precedence: 9, example: "flags & 0xFF", cite: "OMG
|
|
168205
|
-
"|": { desc: "**Bitwise / Boolean or** (lower precedence than `xor`, precedence 7). Prefer `or` for Boolean logic.", precedence: 7, example: "flags | 0x01", cite: "OMG
|
|
168206
|
-
"??": { desc: "**Null-coalescing** \u2014 returns the left operand if non-null, otherwise the right (precedence 2).", precedence: 2, example: 'name ?? "unnamed"', cite: "OMG
|
|
168207
|
-
"?": { desc: "**Conditional then-marker** \u2014 separates condition from then-branch in `if cond ? thenExpr else elseExpr`.", precedence: 1, example: "if x > 0 ? x else -x", cite: "OMG
|
|
168208
|
-
"=": { desc: "**Initial value** assignment or binding (not equality). For equality testing use `==`.", precedence: 0, example: "attribute mass : MassValue = 1500 [kg];", cite: "OMG
|
|
168209
|
-
"@": { desc: "**Metadata application** shorthand \u2014 applies a metadata definition to the next element.", precedence: 0, example: "@Safety\npart def Engine;", cite: "OMG SysML v2 \
|
|
168210
|
-
"@@": { desc: "**Metaclass application** \u2014 applies a metaclass annotation.", precedence: 0, example: "@@StandardProfile", cite: "OMG SysML v2 \
|
|
168185
|
+
":": { desc: "**Typing** \u2014 binds a usage to a type (`defined by` in SysML, `typed by` in KerML).", precedence: 0, example: "part myCar : Vehicle;", cite: "OMG KerML v1.0 \xA78.2.4.3.2 (Feature Typing)" },
|
|
168186
|
+
":>": { desc: "**Specialization** (on defs) / **Subsetting** (on features) \u2014 target specializes or subsets the named element.", precedence: 0, example: "part def Car :> Vehicle;", cite: "OMG KerML v1.0 \xA78.2.4.1.2 (Specialization)" },
|
|
168187
|
+
":>>": { desc: "**Redefinition** \u2014 feature narrows or overrides an inherited feature.", precedence: 0, example: "attribute :>> mass = 1500 [kg];", cite: "OMG KerML v1.0 \xA78.2.4.3.4 (Redefinition)" },
|
|
168188
|
+
"::>": { desc: "**Reference subsetting** \u2014 used on connector ends and view exposures to reference-subset a feature.", precedence: 0, example: "end e ::> vehicle.engine;", cite: "OMG KerML v1.0 \xA78.2.4.3.3 (Subsetting)" },
|
|
168189
|
+
"=>": { desc: "**Cross-subsetting** \u2014 connector end cross-subsets a feature of the connector type.", precedence: 0, example: "connection c ::> myConn { end ::> src => myConn.source; }", cite: "OMG KerML v1.0 \xA78.2.5.5.1 (Connectors)" },
|
|
168190
|
+
"~": { desc: "**Conjugation** \u2014 flips the directions of all port features. Common on port typing: `port p : ~PowerOut;`.", precedence: 0, example: "port supply : ~PowerOutPort;", cite: "OMG KerML v1.0 \xA78.2.4.1.3 (Conjugation)" },
|
|
168191
|
+
"::": { desc: "**Namespace separator** \u2014 descends into a package namespace (`Pkg::Member`).", precedence: 0, example: "import ISQ::MassValue;", cite: "OMG KerML v1.0 \xA78.2.2.3 (Names)" },
|
|
168192
|
+
"::*": { desc: "**Namespace wildcard** \u2014 imports all visible members of a namespace.", precedence: 0, example: "private import ISQ::*;", cite: "OMG KerML v1.0 \xA78.2.3.4.2 (Imports)" },
|
|
168193
|
+
"::**": { desc: "**Recursive import** \u2014 imports all visible members recursively from nested namespaces.", precedence: 0, example: "private import Pkg::*::**;", cite: "OMG KerML v1.0 \xA78.2.3.4.2 (Imports)" },
|
|
168194
|
+
".": { desc: "**Feature access** \u2014 member path inside an expression (`vehicle.body.mass`). Do NOT use `.` to descend into packages; use `::`.", precedence: 18, example: "vehicle.body.mass <= 2500 [kg]", cite: "OMG KerML v1.0 \xA78.2.5.8.2 (Primary Expressions)" },
|
|
168195
|
+
".?": { desc: "**Null-safe feature access** \u2014 like `.` but returns null if the receiver is null.", precedence: 18, example: "vehicle.?engine.torque", cite: "OMG KerML v1.0 \xA78.2.5.8.2 (Primary Expressions)" },
|
|
168196
|
+
"->": { desc: "**Collection / library invocation** \u2014 invokes a library or collection function on the receiver.", precedence: 18, example: "wheels->size() // number of wheels\nwheels->forAll { in w : Wheel | w.pressure >= 2.5 }", cite: "OMG KerML v1.0 \xA78.2.5.8.2 (Primary Expressions)" },
|
|
168197
|
+
"#(": { desc: "**Indexed access** \u2014 one-based index access on an ordered sequence.", precedence: 18, example: "wheels#(1).pressure // first wheel", cite: "OMG KerML v1.0 \xA78.2.5.8.2 (Primary Expressions)" },
|
|
168198
|
+
"**": { desc: "**Exponentiation** operator (precedence 16).", precedence: 16, example: "x ** 2 // x squared", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168199
|
+
"^": { desc: "**Exponentiation** operator (same as `**`, precedence 16).", precedence: 16, example: "x ^ 2", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168200
|
+
"*": { desc: "**Multiplication** (precedence 15).", precedence: 15, example: "mass * acceleration", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168201
|
+
"/": { desc: "**Division** (precedence 15).", precedence: 15, example: "distance / time", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168202
|
+
"%": { desc: "**Modulo** / remainder (precedence 15).", precedence: 15, example: "n % 2 == 0 // even", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168203
|
+
"+": { desc: "**Addition** (precedence 14) or unary plus (precedence 17).", precedence: 14, example: "a + b", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168204
|
+
"-": { desc: "**Subtraction** (precedence 14) or unary minus (precedence 17).", precedence: 14, example: "a - b", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168205
|
+
"..": { desc: "**Range** expression \u2014 inclusive integer or quantity range.", precedence: 13, example: "0..9 // values 0 through 9", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168206
|
+
"<": { desc: "**Less than** comparison (precedence 12).", precedence: 12, example: "mass < 2500 [kg]", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168207
|
+
"<=": { desc: "**Less than or equal** comparison (precedence 12).", precedence: 12, example: "speed <= 120 [km/h]", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168208
|
+
">": { desc: "**Greater than** comparison (precedence 12).", precedence: 12, example: "pressure > 0 [Pa]", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168209
|
+
">=": { desc: "**Greater than or equal** comparison (precedence 12).", precedence: 12, example: "charge >= 20 [%]", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168210
|
+
"==": { desc: "**Value equality** (precedence 11). Tests whether two values are equal. For binding/assignment use `=`.", precedence: 11, example: 'status == "active"', cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168211
|
+
"!=": { desc: "**Value inequality** (precedence 11).", precedence: 11, example: "mode != null", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168212
|
+
"===": { desc: "**Identity equality** \u2014 tests that two references point to the same object (precedence 11).", precedence: 11, example: "a === b", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168213
|
+
"!==": { desc: "**Identity inequality** (precedence 11).", precedence: 11, example: "a !== b", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168214
|
+
"&": { desc: "**Bitwise / Boolean and** (lower precedence than comparison, precedence 9). Prefer `and` for Boolean logic.", precedence: 9, example: "flags & 0xFF", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168215
|
+
"|": { desc: "**Bitwise / Boolean or** (lower precedence than `xor`, precedence 7). Prefer `or` for Boolean logic.", precedence: 7, example: "flags | 0x01", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168216
|
+
"??": { desc: "**Null-coalescing** \u2014 returns the left operand if non-null, otherwise the right (precedence 2).", precedence: 2, example: 'name ?? "unnamed"', cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168217
|
+
"?": { desc: "**Conditional then-marker** \u2014 separates condition from then-branch in `if cond ? thenExpr else elseExpr`.", precedence: 1, example: "if x > 0 ? x else -x", cite: "OMG KerML v1.0 \xA78.2.5.8.1 (Operator Expressions)" },
|
|
168218
|
+
"=": { desc: "**Initial value** assignment or binding (not equality). For equality testing use `==`.", precedence: 0, example: "attribute mass : MassValue = 1500 [kg];", cite: "OMG KerML v1.0 \xA78.2.5.10 (Feature Values)" },
|
|
168219
|
+
"@": { desc: "**Metadata application** shorthand \u2014 applies a metadata definition to the next element.", precedence: 0, example: "@Safety\npart def Engine;", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.27 (Metadata)" },
|
|
168220
|
+
"@@": { desc: "**Metaclass application** \u2014 applies a metaclass annotation.", precedence: 0, example: "@@StandardProfile", cite: "OMG SysML v2.0 Part 1 \xA78.2.2.27 (Metadata)" }
|
|
168211
168221
|
};
|
|
168212
168222
|
|
|
168213
168223
|
// ../language-server/out/src/services/hover-provider.js
|
|
168214
|
-
var KEYWORD_CITATION_SOURCE = "info/language/03-keywords-and-operators.md:1";
|
|
168215
|
-
var OPERATOR_CITATION_SOURCE = "info/language/03-keywords-and-operators.md:223";
|
|
168216
168224
|
var MAX_HOVER_LINES = 30;
|
|
168217
168225
|
function leafAtOffset(node, offset2) {
|
|
168218
168226
|
if (isLeafCstNode(node)) {
|
|
@@ -168622,7 +168630,7 @@ function buildKeywordHover(token) {
|
|
|
168622
168630
|
${info.example}
|
|
168623
168631
|
\`\`\``);
|
|
168624
168632
|
}
|
|
168625
|
-
lines.push("", sourceFooter(
|
|
168633
|
+
lines.push("", sourceFooter(info.cite));
|
|
168626
168634
|
return lines.join("\n");
|
|
168627
168635
|
}
|
|
168628
168636
|
function escapeRegExp2(text) {
|
|
@@ -168647,7 +168655,7 @@ function buildMultiWordKeywordHover(document2, leaf) {
|
|
|
168647
168655
|
lines.push("", `\`\`\`sysml
|
|
168648
168656
|
${info.example}
|
|
168649
168657
|
\`\`\``);
|
|
168650
|
-
lines.push("", sourceFooter(
|
|
168658
|
+
lines.push("", sourceFooter(info.cite));
|
|
168651
168659
|
return {
|
|
168652
168660
|
value: lines.join("\n"),
|
|
168653
168661
|
range: {
|
|
@@ -168680,9 +168688,7 @@ ${info.example}
|
|
|
168680
168688
|
lines.push("", `Maps to Kernel Function Library function \`${fn}\`.`);
|
|
168681
168689
|
if (libraryFunctionDetails)
|
|
168682
168690
|
lines.push("", libraryFunctionDetails);
|
|
168683
|
-
|
|
168684
|
-
lines.push("", `*${info.cite}*`);
|
|
168685
|
-
lines.push("", sourceFooter(OPERATOR_CITATION_SOURCE));
|
|
168691
|
+
lines.push("", sourceFooter(info.cite));
|
|
168686
168692
|
return lines.join("\n");
|
|
168687
168693
|
}
|
|
168688
168694
|
function functionMemberSignature(member) {
|
|
@@ -168828,7 +168834,7 @@ function limitHoverLines(value) {
|
|
|
168828
168834
|
return value;
|
|
168829
168835
|
let footerIndex = -1;
|
|
168830
168836
|
for (let index2 = lines.length - 1; index2 >= 0; index2--) {
|
|
168831
|
-
if (/^\*Source: `[^`]
|
|
168837
|
+
if (/^\*Source: `[^`]+`\*$/u.test(lines[index2])) {
|
|
168832
168838
|
footerIndex = index2;
|
|
168833
168839
|
break;
|
|
168834
168840
|
}
|
|
@@ -170467,14 +170473,14 @@ function evaluateFilterCondition(node, metadataTypes, resolveRefs) {
|
|
|
170467
170473
|
return node.items.length === 1 ? evaluateFilterCondition(node.items[0], metadataTypes, resolveRefs) : void 0;
|
|
170468
170474
|
}
|
|
170469
170475
|
if (isBinExpr(node)) {
|
|
170470
|
-
if (
|
|
170476
|
+
if (CONJUNCTION_OPERATORS.has(node.op)) {
|
|
170471
170477
|
const left = evaluateFilterCondition(node.left, metadataTypes, resolveRefs);
|
|
170472
170478
|
const right = evaluateFilterCondition(node.right, metadataTypes, resolveRefs);
|
|
170473
170479
|
if (left === false || right === false)
|
|
170474
170480
|
return false;
|
|
170475
170481
|
return left === void 0 || right === void 0 ? void 0 : true;
|
|
170476
170482
|
}
|
|
170477
|
-
if (
|
|
170483
|
+
if (DISJUNCTION_OPERATORS.has(node.op)) {
|
|
170478
170484
|
const left = evaluateFilterCondition(node.left, metadataTypes, resolveRefs);
|
|
170479
170485
|
const right = evaluateFilterCondition(node.right, metadataTypes, resolveRefs);
|
|
170480
170486
|
if (left === true || right === true)
|
|
@@ -170485,6 +170491,42 @@ function evaluateFilterCondition(node, metadataTypes, resolveRefs) {
|
|
|
170485
170491
|
}
|
|
170486
170492
|
return void 0;
|
|
170487
170493
|
}
|
|
170494
|
+
var CONJUNCTION_OPERATORS = /* @__PURE__ */ new Set(["and", "&"]);
|
|
170495
|
+
var DISJUNCTION_OPERATORS = /* @__PURE__ */ new Set(["or", "|"]);
|
|
170496
|
+
function undecidableFilterCondition(condition) {
|
|
170497
|
+
if (!condition)
|
|
170498
|
+
return void 0;
|
|
170499
|
+
if (isSelfClassifyExpr(condition)) {
|
|
170500
|
+
return condition.op === "@" || condition.op === "@@" ? void 0 : { node: condition, construct: `the '${condition.op}' classification operator` };
|
|
170501
|
+
}
|
|
170502
|
+
if (isNotExpr(condition) && condition.operand) {
|
|
170503
|
+
return undecidableFilterCondition(condition.operand);
|
|
170504
|
+
}
|
|
170505
|
+
if (condition.$type === "NotExpr")
|
|
170506
|
+
return void 0;
|
|
170507
|
+
if (isParenExpr(condition)) {
|
|
170508
|
+
return condition.items.length === 1 ? undecidableFilterCondition(condition.items[0]) : { node: condition, construct: "a parenthesized expression list" };
|
|
170509
|
+
}
|
|
170510
|
+
if (isBinExpr(condition)) {
|
|
170511
|
+
if (CONJUNCTION_OPERATORS.has(condition.op) || DISJUNCTION_OPERATORS.has(condition.op)) {
|
|
170512
|
+
return undecidableFilterCondition(condition.left) ?? undecidableFilterCondition(condition.right);
|
|
170513
|
+
}
|
|
170514
|
+
return { node: condition, construct: `the '${condition.op}' operator` };
|
|
170515
|
+
}
|
|
170516
|
+
return { node: condition, construct: describeFilterExpr(condition) };
|
|
170517
|
+
}
|
|
170518
|
+
function describeFilterExpr(node) {
|
|
170519
|
+
if (isPostfixOp(node)) {
|
|
170520
|
+
if ((node.dot || node.select) && node.field)
|
|
170521
|
+
return `the '.${node.field}' feature access`;
|
|
170522
|
+
if (node.arrow && node.invoke)
|
|
170523
|
+
return `the '->${node.invoke}' invocation`;
|
|
170524
|
+
return "this postfix expression";
|
|
170525
|
+
}
|
|
170526
|
+
if (isPathExpr(node))
|
|
170527
|
+
return "a plain feature reference";
|
|
170528
|
+
return "this expression form";
|
|
170529
|
+
}
|
|
170488
170530
|
function attachedMetadataTypes(node, resolveRefs) {
|
|
170489
170531
|
const siblings = node.$container?.members;
|
|
170490
170532
|
if (!Array.isArray(siblings))
|
|
@@ -171784,6 +171826,7 @@ ${baseIndent}}`;
|
|
|
171784
171826
|
checkCrossReferences(node, accept) {
|
|
171785
171827
|
const index2 = this.buildIndex();
|
|
171786
171828
|
const imports = [];
|
|
171829
|
+
const exposePaths = [];
|
|
171787
171830
|
const decls = [];
|
|
171788
171831
|
const verifyStmts = [];
|
|
171789
171832
|
const satisfyStmts = [];
|
|
@@ -171795,7 +171838,9 @@ ${baseIndent}}`;
|
|
|
171795
171838
|
const path10 = importedPath(child);
|
|
171796
171839
|
if (alias && path10 && importWildcard(child) === "none")
|
|
171797
171840
|
aliasMap.set(alias, path10);
|
|
171798
|
-
} else if (
|
|
171841
|
+
} else if (isExposePath(child))
|
|
171842
|
+
exposePaths.push(child);
|
|
171843
|
+
else if (isVerifyStmt(child))
|
|
171799
171844
|
verifyStmts.push(child);
|
|
171800
171845
|
else if (isSatisfyStmt(child))
|
|
171801
171846
|
satisfyStmts.push(child);
|
|
@@ -171811,6 +171856,7 @@ ${baseIndent}}`;
|
|
|
171811
171856
|
this.checkPrivateImports(imports, index2, accept);
|
|
171812
171857
|
this.checkPrivateWildcardReferences(node, imports, index2, accept);
|
|
171813
171858
|
this.checkImportCycles(imports, index2, accept);
|
|
171859
|
+
this.checkUnevaluatedFilters(imports, exposePaths, accept);
|
|
171814
171860
|
if (sysmlDiagnosticSettings.unusedImports !== "off") {
|
|
171815
171861
|
this.checkUnusedImports(node, imports, index2, sysmlDiagnosticSettings.unusedImports, accept);
|
|
171816
171862
|
}
|
|
@@ -172429,6 +172475,34 @@ ${baseIndent}}`;
|
|
|
172429
172475
|
}
|
|
172430
172476
|
return false;
|
|
172431
172477
|
}
|
|
172478
|
+
/**
|
|
172479
|
+
* REQ-387 — RES018: an `import` or `expose` filter the metadata-filter
|
|
172480
|
+
* evaluator cannot decide (issue #102).
|
|
172481
|
+
*
|
|
172482
|
+
* The evaluator keeps a member it cannot decide, so an unevaluated filter
|
|
172483
|
+
* silently contributes the members it was written to exclude — a scope or a
|
|
172484
|
+
* view that reads as authoritative and is not. Failing open stays (narrowing
|
|
172485
|
+
* on a guess would manufacture unresolved-name errors); what changes is that
|
|
172486
|
+
* the model now says so at the filter that is not applied.
|
|
172487
|
+
*
|
|
172488
|
+
* Default severity is `info` rather than a warning: the model is legal and the
|
|
172489
|
+
* limitation is this evaluator's, not the author's. Teams that want an
|
|
172490
|
+
* unevaluated filter to break a build raise it per code through
|
|
172491
|
+
* `sysml.validation.severities` (REQ-240).
|
|
172492
|
+
*/
|
|
172493
|
+
checkUnevaluatedFilters(imports, exposePaths, accept) {
|
|
172494
|
+
const report2 = (condition, subject) => {
|
|
172495
|
+
const undecidable = undecidableFilterCondition(condition);
|
|
172496
|
+
if (!undecidable)
|
|
172497
|
+
return;
|
|
172498
|
+
accept(severity("RES018", "info"), DIAGNOSTIC_MESSAGES.RES018_UNEVALUATED_FILTER(subject, undecidable.construct), { node: undecidable.node, code: "RES018" });
|
|
172499
|
+
};
|
|
172500
|
+
for (const imp of imports)
|
|
172501
|
+
for (const filter4 of imp.filters)
|
|
172502
|
+
report2(filter4.condition, "Import");
|
|
172503
|
+
for (const path10 of exposePaths)
|
|
172504
|
+
report2(path10.condition, "Expose");
|
|
172505
|
+
}
|
|
172432
172506
|
// REQ-324 — RES009 unused import (configurable, OFF by default)
|
|
172433
172507
|
checkUnusedImports(root4, imports, index2, level, accept) {
|
|
172434
172508
|
if (imports.length === 0)
|
|
@@ -194492,7 +194566,7 @@ async function runExport(command) {
|
|
|
194492
194566
|
}
|
|
194493
194567
|
|
|
194494
194568
|
// src/main.ts
|
|
194495
|
-
var VERSION2 = true ? "0.15.
|
|
194569
|
+
var VERSION2 = true ? "0.15.2" : "dev";
|
|
194496
194570
|
function display(file) {
|
|
194497
194571
|
const rel2 = path9.relative(process.cwd(), file);
|
|
194498
194572
|
return rel2 && !rel2.startsWith("..") ? rel2.split(path9.sep).join("/") : file;
|