{"record":{"id":"6c740d013fc2c822","repo":"apple/pkl","slug":"cannotrenderobjectwithelementsandothermembers","errorCode":"cannotRenderObjectWithElementsAndOtherMembers","errorMessage":"cannotRenderObjectWithElementsAndOtherMembers","messagePattern":"cannotRenderObjectWithElementsAndOtherMembers","errorType":"error_code","errorClass":"VmException","httpStatus":null,"severity":"error","filePath":"pkl-core/src/main/java/org/pkl/core/stdlib/AbstractRenderer.java","lineNumber":247,"sourceCode":"          } else if (member.isEntry()) {\n            if (!canRenderPropertyOrEntry) cannotRenderObjectWithElementsAndOtherMembers(value);\n            doVisitEntry(memberKey, memberValue, sourceSection, isFirst);\n          } else {\n            doVisitElement((long) memberKey, memberValue, sourceSection, isFirst.getAndSetFalse());\n          }\n          return true;\n        });\n\n    enclosingValue = prevEnclosingValue;\n    endDynamic(value, isFirst.get());\n  }\n\n  protected boolean canRenderPropertyOrEntryOf(VmDynamic object) {\n    return !object.hasElements();\n  }\n\n  private void cannotRenderObjectWithElementsAndOtherMembers(VmDynamic object) {\n    throw new VmExceptionBuilder()\n        .evalError(\"cannotRenderObjectWithElementsAndOtherMembers\", name)\n        .withProgramValue(\"Object\", object)\n        .build();\n  }\n\n  @Override\n  public final void visitListing(VmListing value) {\n    value.force(false, false);\n    startListing(value);\n\n    var prevEnclosingValue = enclosingValue;\n    enclosingValue = value;\n    var isFirst = new MutableBoolean(true);\n\n    value.iterateAlreadyForcedMemberValues(\n        (memberKey, member, memberValue) -> {\n          assert member.isElement();\n          doVisitElement(","sourceCodeStart":229,"sourceCodeEnd":265,"githubUrl":"https://github.com/apple/pkl/blob/f3efcbfc9b60d30053b0536d664948d7aa1b8673/pkl-core/src/main/java/org/pkl/core/stdlib/AbstractRenderer.java#L229-L265","documentation":"Renderers (e.g. YAML/JSON property output in stdlib) cannot serialize an object that contains BOTH elements (list-style members) and properties/entries. When visitDynamic on a rendered object finds element members alongside other members, it throws this error because the target format has no representation for such a hybrid object. The object must be reshaped so it is purely map-like or purely list-like.","triggerScenarios":"Calling a renderer (e.g. YamlRenderer/XmlRenderer render) on a Dynamic object created with a mix of element entries (`foo { \"a\"; \"b\" }` style elements) and properties or entries in the same object.","commonSituations":"Building config output where an object mixes array items and named fields; accidentally adding elements to an object intended as a map; rendering amending objects that inherit elements plus properties.","solutions":["Restructure the object so elements and properties/entries are not mixed: put elements in a separate Listing-valued property.","If the intent is a list, use `new Listing { ... }` instead of a Dynamic with elements.","If the intent is a map/object, convert the elements to entries or properties with distinct keys.","Convert to a Map or Listing via toMap()/toList() before rendering."],"exampleFix":"// before\noutput {\n  renderer = new YamlRenderer {}\n  value = new Dynamic {\n    \"elem1\"\n    \"elem2\"\n    name = \"x\"\n  }\n}\n\n// after\noutput {\n  renderer = new YamlRenderer {}\n  value = new Dynamic {\n    items = new Listing { \"elem1\"; \"elem2\" }\n    name = \"x\"\n  }\n}","handlingStrategy":"validation","validationCode":"// guard before rendering\nfunction isHomogeneous(o) = o.isEmpty || (o.hasElements && o.hasOnlyElements()) || (!o.hasElements)","typeGuard":null,"tryCatchPattern":"try { render(value) } catch (e) { if (e.message.contains('cannotRenderObjectWithElementsAndOtherMembers')) render(restructure(value)) else throw e }","preventionTips":["Keep rendered objects purely map-like or purely list-like","Use Listing for sequences and Dynamic/Map for named fields","Add a pre-render sanity test over representative output values"],"tags":["pkl","renderer","serialization","object-shape"],"backgroundTag":"unsupported-operation","analyzedSha":"f3efcbfc9b60d30053b0536d664948d7aa1b8673","analyzedAt":"2026-09-08T13:10:45.570Z","contentChangedAt":"2026-09-08T13:10:45.570Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}