{"id":"language--casts-type-checks","name":"Type checks and casts","owner":"yeho","package":"language","kind":"language","signature":"value is Type\nvalue as Type","description":"is asks whether a value has a named type; as requests a cast to that named type.","context":"Prefer designs that already know their types. Use is/as at admitted dynamic boundaries and keep failure handling explicit.","parameters":[],"returns":"","members":[],"tags":["as","cpu","is","language","logic","yeho"],"updated":"2026-09-09","source":{"repository":"yeho","path":"parser_expressions.cpp parseComparison; semantic/expr.cpp"},"status":"experimental","notes":["Complete class/reference flow is oracle-only today, so this is not a general Kyber dynamic-object promise.","The target after is or as is currently a named type."],"examples":[{"id":"complete","title":"Complete program","description":"Use a checked class boundary before reading the pilot-specific callsign.","code":"class Actor { }\nclass Pilot extends Actor { text callsign = \"Nova\" }\nActor actor = Pilot()\nif actor is Pilot\n{\n    Pilot pilot = actor as Pilot\n    Console.Log(pilot.callsign)\n}\n","tags":["cpu","language"],"run":"cpu-oracle","expected":null,"verifyRun":false,"manifest":"manifestVersion = \"2\"\npackage = \"api.example.language__casts_type_checks\"\nversion = \"0.1.0\"\nlanguageEdition = \"yeho-core-2026.1\"\n\n[app]\nkind = \"headless\"\n","verification":"type checked","sha256":"6b0a2daa3a1e24043a67452f434dd92fb0372748e1da101d392decec78c66125","checked":"2026-09-09","diagnostic":"","observedOutput":null,"checkedBackend":null}],"searchTerms":[],"url":"https://demonhunterlabs.com/academy/api?item=language--casts-type-checks","json":"https://demonhunterlabs.com/reference/items/language--casts-type-checks.json","markdown":"https://demonhunterlabs.com/reference/text/language--casts-type-checks.md"}
