Skip to content

DESCRIBE emits incorrect $ prefix on enum literal in RETURN expression, causing CE0109 on roundtrip #27

@engalar

Description

@engalar

Summary

DESCRIBE MICROFLOW outputs enum value references with a leading $ (e.g. $Module.Enum.Value), but Mendix expressions require enum literals without $. Re-executing the DESCRIBE output with mxcli exec produces an invalid microflow that fails mx check with CE0109.

Steps to Reproduce

Using a microflow that returns an enumeration value (e.g. ConversationalUI.TokenMonitorSettings_GetGranularity from the GenAI Commons marketplace module):

# 1. Capture DESCRIBE output
mxcli -p app.mpr -c "DESCRIBE MICROFLOW ConversationalUI.TokenMonitorSettings_GetGranularity;" > a.mdl

# 2. Drop the original
mxcli -p app.mpr -c "DROP MICROFLOW ConversationalUI.TokenMonitorSettings_GetGranularity;"

# 3. Re-create from DESCRIBE output
mxcli exec a.mdl -p app.mpr

# 4. Validate
mx check app.mpr

DESCRIBE Output (a.mdl) — incorrect

CREATE MICROFLOW ConversationalUI.TokenMonitorSettings_GetGranularity (
  $TokenMonitorSettings: ConversationalUI.TokenMonitorSettings
)
RETURNS ENUM ConversationalUI.ENUM_Granularity
BEGIN
  IF $TokenMonitorSettings/DateFrom != empty THEN
    ...
      RETURN $ConversationalUI.ENUM_Granularity._30Mins;
    ...

The $ prefix on $ConversationalUI.ENUM_Granularity._30Mins is wrong. Mendix expressions use Module.Enum.Value (no $) for enum literals.

Expected Behavior

DESCRIBE should output enum literal references without $:

RETURN ConversationalUI.ENUM_Granularity._30Mins;

Actual Behavior

mx check reports 9 × CE0109 after roundtrip:

[error] [CE0109] "Undefined variable 'ConversationalUI'." at End event
[error] [CE0109] "Undefined variable 'empty'." at End event
The app contains: 9 errors.

The original MPR passes mx check with 0 errors before the roundtrip.

Environment

  • Mendix version: 11.6.4
  • Affected module: ConversationalUI (Marketplace v3.0.0) — any microflow with RETURNS ENUM and enum literal return values

Impact

This breaks the DESCRIBE → exec roundtrip for any microflow that returns an enumeration value directly. It makes DESCRIBE output non-idempotent.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions