{"record":{"id":"36e50f2658f35889","repo":"emberjs/ember.js","slug":"unclosed-element-poppednode-tag","errorCode":null,"errorMessage":"Unclosed element `${poppedNode.tag}`","messagePattern":"Unclosed element `(.+?)`","errorType":"validation","errorClass":"SyntaxError","httpStatus":null,"severity":"error","filePath":"packages/@glimmer/syntax/lib/parser/handlebars-node-visitors.ts","lineNumber":106,"sourceCode":"      return node;\n    }\n\n    let poppedNode;\n\n    try {\n      this.elementStack.push(node);\n\n      for (let child of program.body) {\n        this.acceptNode(child);\n      }\n    } finally {\n      poppedNode = this.elementStack.pop();\n    }\n\n    // Ensure that that the element stack is balanced properly.\n    if (node !== poppedNode) {\n      if (poppedNode?.type === 'ElementNode') {\n        throw generateSyntaxError(`Unclosed element \\`${poppedNode.tag}\\``, poppedNode.loc);\n      } else {\n        // If the stack is not balanced, then it is likely our own bug, because\n        // any unclosed Handlebars blocks should already been caught by now\n        assert(poppedNode !== undefined, '[BUG] empty parser elementStack');\n        assert(false, `[BUG] mismatched parser elementStack node: ${node.type}`);\n      }\n    }\n\n    return node;\n  }\n\n  BlockStatement(block: HBS.UpstreamBlockStatement): ASTv1.BlockStatement | void {\n    if (this.tokenizer.state === 'comment') {\n      assert(block.loc, '[BUG] BlockStatement in parser unexpectedly did not have loc');\n      this.appendToCommentData(this.sourceForNode(block as HBS.Node));\n      return;\n    }\n","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/emberjs/ember.js/blob/26f97246a8bf2e28edf26ac3093da2e86c04ffc5/packages/@glimmer/syntax/lib/parser/handlebars-node-visitors.ts#L88-L124","documentation":"Error \"Unclosed element `${poppedNode.tag}`\" thrown in emberjs/ember.js.","triggerScenarios":"Thrown at packages/@glimmer/syntax/lib/parser/handlebars-node-visitors.ts:106 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"26f97246a8bf2e28edf26ac3093da2e86c04ffc5","analyzedAt":"2026-09-01T05:01:28.182Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}