{
  "isError" : false,
  "request" : {
    "file" : "main.ek9",
    "line" : 19
  },
  "response" : {
    "advisories" : [ {
      "kind" : "apply-rolled-back",
      "message" : "The changeset was committed, the post-apply compile introduced new error diagnostics (see wouldBeDiagnostics), and every file was restored — the workspace is unchanged. If the broken intermediate state is deliberate (a multi-step edit a later call would fix), land the complete final state in one apply — multi-mutation tools accept several mutations atomically, and a dirtyOverlay carrying the dependent files' content lets the apply land with verification deferred until those buffers are saved; otherwise fix the cause and re-apply."
    } ],
    "conflicts" : [ ],
    "edits" : [ {
      "after" : "    ClosedBox as abstract",
      "before" : "    ClosedBox",
      "endLine" : 19,
      "file" : "main.ek9",
      "startLine" : 19,
      "type" : "replace"
    } ],
    "meta" : {
      "serverMs" : "<timing>"
    },
    "risk" : {
      "crossesModuleBoundary" : false,
      "estimatedSeverity" : "high",
      "fileCount" : 1,
      "lineCount" : 1,
      "touchesPublicApi" : true,
      "touchesTests" : false
    },
    "status" : "would-fail",
    "summary" : "Changed class ClosedBox → as abstract — rolled back: post-apply compile introduced 1 new diagnostic; workspace restored",
    "workspaceHash" : "<workspace-hash>",
    "wouldBeDiagnostics" : [ {
      "column" : 11,
      "errorCode" : "E50080",
      "file" : "<workspace-root>/main.ek9",
      "line" : 36,
      "message" : "❌ error   :[E50080]: 'ClosedBox' on line 36 position 11: which is a call to 'ClosedBox' on line 19 in 'main.ek9': cannot make a call on an abstract function/type directly\n        ──▶ main.ek9:36:12\n        │\n     36 │       b <- ClosedBox()\n        │            ^^^^^^^^^ 'ClosedBox'\n        │\n        └─ 🔗 See: ek9 -h E50080\n\n        ┏━ ℹ️ EXPLANATION\n        ┃ \n        ┃ [DIAGNOSIS]\n        ┃ You're trying to directly instantiate an abstract type or function.\n        ┃ Abstract types define contracts without implementation - you must extend them.\n        ┃ \n        ┃ [EXAMPLES]\n        ┃ Compilable examples demonstrating this error and the correct fix:\n        ┃   ek9 -q 821   (Why can't I construct an abstract type directly in EK9?)\n        ┃   ek9 -q 831   (Why can't I use an abstract function as a return type dir...)\n        ┃   ek9 -q 103   (What are abstract classes and methods in EK9?)\n        ┃   ek9 -q 111   (What are components in EK9?)\n        ┃   ek9 -q 114   (How do aspects work with components for AOP?)\n        ┃ \n        ┃ [BUILT-IN ABSTRACT TYPES]\n        ┃ - SignalHandler: `-> signal as String <- result as Integer?`\n        ┃ - TCPHandler: `-> input as StringInput, output as StringOutput`\n        ┃ \n        ┃ [ACTION]\n        ┃ 1. Create concrete implementation extending abstract type\n        ┃ 2. Use built-in concrete subtypes where available\n        ┃ 3. Use dynamic function syntax: `() is AbstractType as function`\n        ┃ \n        ┃ [COMMON CAUSES]\n        ┃ - Direct call to abstract function\n        ┃ - Constructor call on abstract class\n        ┃ - Trying to instantiate built-in abstract types\n        ┃ \n        ┃ [SEE ALSO]\n        ┃ - E50080: abstract type instantiation (this error)\n        ┃ - E50070: abstract function in concrete context\n        ┃ - E10030: parameterized abstract generic type\n        ┃ \n        ┃ [EXAMPLE]\n        ┃ This fails with E50080 (bad.ek9):\n        ┃ \n        ┃   #!ek9\n        ┃   defines module error.e50080.bad\n        ┃ \n        ┃     defines class\n        ┃ \n        ┃       Shape as abstract\n        ┃         area() as abstract\n        ┃           <- rtn as Float?\n        ┃ \n        ┃     defines function\n        ┃ \n        ┃       demo()\n        ┃         <- rtn as Float?\n        ┃         shape <- Shape()\n        ┃         rtn: shape.area()\n        ┃ \n        ┃ Fixed (good.ek9):\n        ┃ \n        ┃   #!ek9\n        ┃   defines module error.e50080.good\n        ┃ \n        ┃     defines class\n        ┃ \n        ┃       Shape as abstract\n        ┃         area() as abstract\n        ┃           <- rtn as Float?\n        ┃ \n        ┃       Circle extends Shape\n        ┃         radius as Float: 5.0\n        ┃ \n        ┃         override area()\n        ┃           <- rtn as Float: radius * radius\n        ┃ \n        ┃         default operator ?\n        ┃ \n        ┃     defines function\n        ┃ \n        ┃       demo()\n        ┃         <- rtn as Float?\n        ┃         shape as Shape: Circle()\n        ┃         rtn: shape.area()\n        ┗━━",
      "severity" : "error"
    } ],
    "written" : false
  },
  "scenario" : "make_abstract_would_fail",
  "tool" : "make_abstract"
}
