{"record":{"id":"a845d5c0053c6c09","repo":"apple/pkl","slug":"mappingamendmentcannothaveparameters","errorCode":"mappingAmendmentCannotHaveParameters","errorMessage":"Expected a function that returns a `Mapping`, but got a `Mapping`.","messagePattern":"Expected a function that returns a `Mapping`, but got a `Mapping`\\.","errorType":"exception","errorClass":"VmException","httpStatus":null,"severity":"error","filePath":"pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorObjectLiteralNode.java","lineNumber":259,"sourceCode":"  }\n\n  @Idempotent\n  protected boolean checkListingCannotHaveParameters() {\n    if (parametersDescriptor == null) return true;\n\n    CompilerDirectives.transferToInterpreter();\n    throw exceptionBuilder()\n        .evalError(\"listingAmendmentCannotHaveParameters\")\n        .withLocation(getParentNode())\n        .build();\n  }\n\n  @Idempotent\n  protected boolean checkMappingCannotHaveParameters() {\n    if (parametersDescriptor == null) return true;\n\n    CompilerDirectives.transferToInterpreter();\n    throw exceptionBuilder()\n        .evalError(\"mappingAmendmentCannotHaveParameters\")\n        .withLocation(getParentNode())\n        .build();\n  }\n\n  @ExplodeLoop\n  private ObjectData executeChildren(VirtualFrame frame, Object parent, int parentLength) {\n    var data = new ObjectData(parentLength);\n    for (var memberNode : memberNodes) {\n      memberNode.execute(frame, parent, data);\n    }\n    return data;\n  }\n}\n","sourceCodeStart":241,"sourceCodeEnd":274,"githubUrl":"https://github.com/apple/pkl/blob/f3efcbfc9b60d30053b0536d664948d7aa1b8673/pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorObjectLiteralNode.java#L241-L274","documentation":"An amendment applied to a Mapping must not declare parameters. If the target already is a Mapping (not a function returning one), `(param) -> ...` amendment syntax is rejected by `checkMappingCannotHaveParameters`.","triggerScenarios":"`someMapping { (key) -> ... }` where `someMapping` is already a Mapping value; parametersDescriptor non-null while the parent resolves to a Mapping instance.","commonSituations":"Assuming Mapping amendments take a key parameter like `each`/`map` callbacks; copying a function-returned-Mapping pattern onto a plain Mapping property; IDE autocomplete adding parameter braces incorrectly.","solutions":["Remove the parameters and write entry amendments keyed explicitly (`someMapping { [\"k\"] { ... } }`).","Use `for (key, value in someMapping)` generators to transform entries instead of amendment parameters.","If the value is a function returning a Mapping, call it with arguments first, then amend."],"exampleFix":"// before\nenvs { (name) ->\n  [name] { replicas = 2 }\n}\n// after\nenvs {\n  [\"prod\"] { replicas = 2 }\n}","handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never add a parameter list to amendments of Mapping-valued properties.","Write entries explicitly with `[key]` or use `for (key, value in ...)` generators.","Call the function producing the Mapping with arguments before amending."],"tags":["pkl","mapping","amendment","parameters"],"backgroundTag":"invalid-argument","analyzedSha":"f3efcbfc9b60d30053b0536d664948d7aa1b8673","analyzedAt":"2026-09-08T13:10:45.570Z","contentChangedAt":"2026-09-08T13:10:45.570Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}