---
generated: true
model: claude-opus-4-7
generated_at: 2026-05-21T08:00:00+00:00
source_commit: 2964da04de136705348240f2bd9affa5f3818226
watched_paths_digest: d978c673bd877c4c2dbdf69ee7ae59f91418131f0d86559e7a80b68c78f20ed3
source_doc: docs/generated/design/cross-cutting/diagnostics.md
source_doc_digest: 35cfb9612e0af198f089e0c87a82055a4f43737c2865d74d83133722d9f18bda
warning: "Auto-generated. May drift from source. Do not edit by hand."
---

# Tests for cross-cutting/diagnostics-catalog

## Intent
This bundle is the systematic negative-test sweep called for by the
agentic-tests plan §15.3: one `DIAGNOSTIC_TEST` file per diagnostic
code that the Slang compiler can emit, anchored to the structured
catalogs in `source/slang/slang-diagnostics.lua` and the
`*-diagnostic-defs.h` headers in `source/compiler-core/`. Each test
drives the compiler from a minimum-reproduction input and verifies
that the target code (e.g. `E15405`) appears in slangc's diagnostic
stream. The bundle is split across five parallel agents, one per
uncovered-bucket file; this section corresponds to bucket 0
(codes 1..20102, 123 codes covering lexer, preprocessor, parser,
and driver/linkage diagnostics).

Tests use `//DIAGNOSTIC_TEST:SIMPLE(diag=CHECK,non-exhaustive):`
because almost every reproduction also fires a follow-up parser or
checker diagnostic; `non-exhaustive` lets us pin just the target
catalog code.


## Functional coverage
| Claim | Intent | Anchor | Tests |
| --- | --- | --- | --- |
| Drop note for E30098 (non-static-member-function-not-allowed-as-diff-operand); see README.md | negative | source/slang/slang-diagnostics.lua | [`30098-non-static-member-function-not-allowed-as-diff-operand.slang`](30098-non-static-member-function-not-allowed-as-diff-operand.slang) |
| Drop placeholder for E30068 (mutating-method-on-function-input-parameter-warning); see README.md | negative | source/slang/slang-diagnostics.lua | [`30068-mutating-method-on-function-input-parameter-warning.slang`](30068-mutating-method-on-function-input-parameter-warning.slang) |
| Drop placeholder for E30410 (pack-query-argument-is-invalid); see README.md | negative | source/slang/slang-diagnostics.lua | [`30410-pack-query-argument-is-invalid.slang`](30410-pack-query-argument-is-invalid.slang) |
| Drop placeholder for E30418 (shape-pack-rank-mismatch); see README.md | negative | source/slang/slang-diagnostics.lua | [`30418-shape-pack-rank-mismatch.slang`](30418-shape-pack-rank-mismatch.slang) |
| Fires diagnostic 40011 (overload-candidate) - candidate note after overload error | negative | source/slang/slang-diagnostics.lua | [`40011-overload-candidate.slang`](40011-overload-candidate.slang) |
| Fires diagnostic E1 (cannot-open-file) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`1-cannot-open-file.slang`](1-cannot-open-file.slang) |
| Fires diagnostic E10000 (illegal-character-hex) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`10000-illegal-character-hex.slang`](10000-illegal-character-hex.slang) |
| Fires diagnostic E100000 (downstreamNameNotKnown) - downstream tool name not known | negative | source/compiler-core/slang-misc-diagnostic-defs.h | [`100000-downstream-name-not-known.slang`](100000-downstream-name-not-known.slang) |
| Fires diagnostic E100001 (expectedArgumentForOption) - expected an argument for command-line option | negative | source/compiler-core/slang-misc-diagnostic-defs.h | [`100001-expected-argument-for-option.slang`](100001-expected-argument-for-option.slang) |
| Fires diagnostic E100002 (unbalancedDownstreamArguments) - unbalanced downstream arguments | negative | source/compiler-core/slang-misc-diagnostic-defs.h | [`100002-unbalanced-downstream-arguments.slang`](100002-unbalanced-downstream-arguments.slang) |
| Fires diagnostic E100003 (closeOfUnopenDownstreamArgs) - close of an unopen downstream argument scope | negative | source/compiler-core/slang-misc-diagnostic-defs.h | [`100003-close-of-unopen-downstream-args.slang`](100003-close-of-unopen-downstream-args.slang) |
| Fires diagnostic E100004 (downstreamToolNameNotDefined) - downstream tool name not defined | negative | source/compiler-core/slang-misc-diagnostic-defs.h | [`100004-downstream-tool-name-not-defined.slang`](100004-downstream-tool-name-not-defined.slang) |
| Fires diagnostic E10001 (illegal-character-literal) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`10001-illegal-character-literal.slang`](10001-illegal-character-literal.slang) |
| Fires diagnostic E10002 (octal-literal) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`10002-octal-literal.slang`](10002-octal-literal.slang) |
| Fires diagnostic E10003 (invalid-digit-for-base) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`10003-invalid-digit-for-base.slang`](10003-invalid-digit-for-base.slang) |
| Fires diagnostic E10004 (end-of-file-in-literal) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`10004-end-of-file-in-literal.slang`](10004-end-of-file-in-literal.slang) |
| Fires diagnostic E10005 (newline-in-literal) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`10005-newline-in-literal.slang`](10005-newline-in-literal.slang) |
| Fires diagnostic E10010 (quote-cannot-be-delimiter) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`10010-quote-cannot-be-delimiter.slang`](10010-quote-cannot-be-delimiter.slang) |
| Fires diagnostic E10012 (integer-literal-too-large-for-any-type) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`10012-integer-literal-too-large-for-any-type.slang`](10012-integer-literal-too-large-for-any-type.slang) |
| Fires diagnostic E15002 (directive-after-else) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15002-directive-after-else.slang`](15002-directive-after-else.slang) |
| Fires diagnostic E15100 (expected-preprocessor-directive-name) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15100-expected-preprocessor-directive-name.slang`](15100-expected-preprocessor-directive-name.slang) |
| Fires diagnostic E15102 (expected-token-in-preprocessor-directive) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15102-expected-token-in-preprocessor-directive.slang`](15102-expected-token-in-preprocessor-directive.slang) |
| Fires diagnostic E15103 (unexpected-tokens-after-directive) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15103-unexpected-tokens-after-directive.slang`](15103-unexpected-tokens-after-directive.slang) |
| Fires diagnostic E15104 (expected-2-tokens-in-preprocessor-directive) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15104-expected-2-tokens-in-preprocessor-directive.slang`](15104-expected-2-tokens-in-preprocessor-directive.slang) |
| Fires diagnostic E15200 (expected-token-in-preprocessor-expression) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15200-expected-token-in-preprocessor-expression.slang`](15200-expected-token-in-preprocessor-expression.slang) |
| Fires diagnostic E15201 (syntax-error-in-preprocessor-expression) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15201-syntax-error-in-preprocessor-expression.slang`](15201-syntax-error-in-preprocessor-expression.slang) |
| Fires diagnostic E15203 (expected-token-in-defined-expression) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15203-expected-token-in-defined-expression.slang`](15203-expected-token-in-defined-expression.slang) |
| Fires diagnostic E15204 (directive-expects-expression) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15204-directive-expects-expression.slang`](15204-directive-expects-expression.slang) |
| Fires diagnostic E15206 (expected-integral-version-number) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15206-expected-integral-version-number.slang`](15206-expected-integral-version-number.slang) |
| Fires diagnostic E15207 (unknown-language-version) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15207-unknown-language-version.slang`](15207-unknown-language-version.slang) |
| Fires diagnostic E15208 (unknown-language) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15208-unknown-language.slang`](15208-unknown-language.slang) |
| Fires diagnostic E15403 (expected-token-in-macro-parameters) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15403-expected-token-in-macro-parameters.slang`](15403-expected-token-in-macro-parameters.slang) |
| Fires diagnostic E15404 (builtin-macro-redefinition) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15404-builtin-macro-redefinition.slang`](15404-builtin-macro-redefinition.slang) |
| Fires diagnostic E15405 (token-paste-at-start) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15405-token-paste-at-start.slang`](15405-token-paste-at-start.slang) |
| Fires diagnostic E15406 (token-paste-at-end) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15406-token-paste-at-end.slang`](15406-token-paste-at-end.slang) |
| Fires diagnostic E15407 (expected-macro-parameter-after-stringize) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15407-expected-macro-parameter-after-stringize.slang`](15407-expected-macro-parameter-after-stringize.slang) |
| Fires diagnostic E15408 (duplicate-macro-parameter-name) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15408-duplicate-macro-parameter-name.slang`](15408-duplicate-macro-parameter-name.slang) |
| Fires diagnostic E15409 (variadic-macro-parameter-must-be-last) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15409-variadic-macro-parameter-must-be-last.slang`](15409-variadic-macro-parameter-must-be-last.slang) |
| Fires diagnostic E15500 (expected-token-in-macro-arguments) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15500-expected-token-in-macro-arguments.slang`](15500-expected-token-in-macro-arguments.slang) |
| Fires diagnostic E15501 (wrong-number-of-arguments-to-macro) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15501-wrong-number-of-arguments-to-macro.slang`](15501-wrong-number-of-arguments-to-macro.slang) |
| Fires diagnostic E15503 (invalid-token-paste-result) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15503-invalid-token-paste-result.slang`](15503-invalid-token-paste-result.slang) |
| Fires diagnostic E15600 (expected-pragma-directive-name) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15600-expected-pragma-directive-name.slang`](15600-expected-pragma-directive-name.slang) |
| Fires diagnostic E15601 (unknown-pragma-directive-ignored) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15601-unknown-pragma-directive-ignored.slang`](15601-unknown-pragma-directive-ignored.slang) |
| Fires diagnostic E15614 (pragma-warning-suppress-cannot-identify-next-line) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`15614-pragma-warning-suppress-cannot-identify-next-line.slang`](15614-pragma-warning-suppress-cannot-identify-next-line.slang) |
| Fires diagnostic E20017 (const-not-allowed-on-c-style-ptr-decl) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`20017-const-not-allowed-on-c-style-ptr-decl.slang`](20017-const-not-allowed-on-c-style-ptr-decl.slang) |
| Fires diagnostic E20018 (const-not-allowed-on-type) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`20018-const-not-allowed-on-type.slang`](20018-const-not-allowed-on-type.slang) |
| Fires diagnostic E20019 (volatile-not-allowed-on-type) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`20019-volatile-not-allowed-on-type.slang`](20019-volatile-not-allowed-on-type.slang) |
| Fires diagnostic E20101 (unintended-empty-statement) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`20101-unintended-empty-statement.slang`](20101-unintended-empty-statement.slang) |
| Fires diagnostic E20102 (unexpected-body-after-semicolon) from a minimum-reproduction input. | negative | source/slang/slang-diagnostics.lua | [`20102-unexpected-body-after-semicolon.slang`](20102-unexpected-body-after-semicolon.slang) |
| Fires diagnostic E29100 (unrecognized-spirv-opcode) - unrecognized SPIR-V opcode | negative | source/slang/slang-diagnostics.lua | [`29100-unrecognized-spirv-opcode.slang`](29100-unrecognized-spirv-opcode.slang) |
| Fires diagnostic E29105 (spirv-instruction-without-result-type-id) - instruction has no result-type-id operand | negative | source/slang/slang-diagnostics.lua | [`29105-spirv-instruction-without-result-type-id.slang`](29105-spirv-instruction-without-result-type-id.slang) |
| Fires diagnostic E29107 (spirv-unable-to-resolve-name) - unknown SPIR-V identifier | negative | source/slang/slang-diagnostics.lua | [`29107-spirv-unable-to-resolve-name.slang`](29107-spirv-unable-to-resolve-name.slang) |
| Fires diagnostic E29109 (spirv-operand-range) - literal integer out of range | negative | source/slang/slang-diagnostics.lua | [`29109-spirv-operand-range.slang`](29109-spirv-operand-range.slang) |
| Fires diagnostic E29112 (spirv-instruction-with-not-enough-operands) - not enough operands | negative | source/slang/slang-diagnostics.lua | [`29112-spirv-instruction-with-not-enough-operands.slang`](29112-spirv-instruction-with-not-enough-operands.slang) |
| Fires diagnostic E29113 (spirv-id-redefinition) - SPIR-V id redefinition | negative | source/slang/slang-diagnostics.lua | [`29113-spirv-id-redefinition.slang`](29113-spirv-id-redefinition.slang) |
| Fires diagnostic E29114 (spirv-undefined-id) - undefined SPIR-V id | negative | source/slang/slang-diagnostics.lua | [`29114-spirv-undefined-id.slang`](29114-spirv-undefined-id.slang) |
| Fires diagnostic E29115 (target-switch-case-cannot-be-a-stage) - cannot use stage name in __target_switch | negative | source/slang/slang-diagnostics.lua | [`29115-target-switch-case-cannot-be-a-stage.slang`](29115-target-switch-case-cannot-be-a-stage.slang) |
| Fires diagnostic E30020 (expected-array-expression) - expected an array expression | negative | source/slang/slang-diagnostics.lua | [`30020-expected-array-expression.slang`](30020-expected-array-expression.slang) |
| Fires diagnostic E30024 (cannot-convert-array-of-smaller-to-larger-size) - array size mismatch prevents conversion | negative | source/slang/slang-diagnostics.lua | [`30024-cannot-convert-array-of-smaller-to-larger-size.slang`](30024-cannot-convert-array-of-smaller-to-larger-size.slang) |
| Fires diagnostic E30030 (reference-type-as-struct-field) - reference type cannot be used as struct field | negative | source/slang/slang-diagnostics.lua | [`30030-reference-type-as-struct-field.slang`](30030-reference-type-as-struct-field.slang) |
| Fires diagnostic E30052 (invalid-swizzle-expr) - invalid swizzle expression | negative | source/slang/slang-diagnostics.lua | [`30052-invalid-swizzle-expr.slang`](30052-invalid-swizzle-expr.slang) |
| Fires diagnostic E30053 (break-label-not-found) - break label not found | negative | source/slang/slang-diagnostics.lua | [`30053-break-label-not-found.slang`](30053-break-label-not-found.slang) |
| Fires diagnostic E30055 (use-of-non-short-circuiting-operator-in-diff-func) - non-short-circuiting `?:` not allowed in differentiable function | negative | source/slang/slang-diagnostics.lua | [`30055-use-of-non-short-circuiting-operator-in-diff-func.slang`](30055-use-of-non-short-circuiting-operator-in-diff-func.slang) |
| Fires diagnostic E30061 (expected-a-namespace) - expected a namespace | negative | source/slang/slang-diagnostics.lua | [`30061-expected-a-namespace.slang`](30061-expected-a-namespace.slang) |
| Fires diagnostic E30067 (mutating-method-on-function-input-parameter-error) - mutating method called on `in` parameter | negative | source/slang/slang-diagnostics.lua | [`30067-mutating-method-on-function-input-parameter-error.slang`](30067-mutating-method-on-function-input-parameter-error.slang) |
| Fires diagnostic E30071 (var-cannot-be-unsized) - cannot instantiate unsized type | negative | source/slang/slang-diagnostics.lua | [`30071-var-cannot-be-unsized.slang`](30071-var-cannot-be-unsized.slang) |
| Fires diagnostic E30072 (param-cannot-be-unsized) - function parameter cannot be unsized | negative | source/slang/slang-diagnostics.lua | [`30072-param-cannot-be-unsized.slang`](30072-param-cannot-be-unsized.slang) |
| Fires diagnostic E30075 (cannot-specialize-generic) - cannot specialize generic | negative | source/slang/slang-diagnostics.lua | [`30075-cannot-specialize-generic.slang`](30075-cannot-specialize-generic.slang) |
| Fires diagnostic E30077 (concrete-argument-to-output-interface) - concrete type passed to interface-typed output parameter | negative | source/slang/slang-diagnostics.lua | [`30077-concrete-argument-to-output-interface.slang`](30077-concrete-argument-to-output-interface.slang) |
| Fires diagnostic E30078 (coherent-keyword-on-a-pointer) - cannot have coherent qualifier on pointer | negative | source/slang/slang-diagnostics.lua | [`30078-coherent-keyword-on-a-pointer.slang`](30078-coherent-keyword-on-a-pointer.slang) |
| Fires diagnostic E30079 (cannot-take-constant-pointers) - cannot take address of immutable object | negative | source/slang/slang-diagnostics.lua | [`30079-cannot-take-constant-pointers.slang`](30079-cannot-take-constant-pointers.slang) |
| Fires diagnostic E30080 (ambiguous-conversion) - ambiguous conversion | negative | source/slang/slang-diagnostics.lua | [`30080-ambiguous-conversion.slang`](30080-ambiguous-conversion.slang) |
| Fires diagnostic E30083 (count-of-argument-is-invalid) - invalid countof argument | negative | source/slang/slang-diagnostics.lua | [`30083-count-of-argument-is-invalid.slang`](30083-count-of-argument-is-invalid.slang) |
| Fires diagnostic E30084 (float-bit-cast-type-mismatch) - bit cast type mismatch | negative | source/slang/slang-diagnostics.lua | [`30084-float-bit-cast-type-mismatch.slang`](30084-float-bit-cast-type-mismatch.slang) |
| Fires diagnostic E30086 (size-of-data-layout-is-invalid) - invalid data layout for sizeof/alignof | negative | source/slang/slang-diagnostics.lua | [`30086-size-of-data-layout-is-invalid.slang`](30086-size-of-data-layout-is-invalid.slang) |
| Fires diagnostic E30091 (try-invoke-callee-should-throw) - callee in 'try' does not throw | negative | source/slang/slang-diagnostics.lua | [`30091-try-invoke-callee-should-throw.slang`](30091-try-invoke-callee-should-throw.slang) |
| Fires diagnostic E30092 (callee-of-try-call-must-be-func) - callee in 'try' must be a function | negative | source/slang/slang-diagnostics.lua | [`30092-callee-of-try-call-must-be-func.slang`](30092-callee-of-try-call-must-be-func.slang) |
| Fires diagnostic E30094 (must-use-try-clause-to-call-a-throw-func) - callee may throw, use 'try' | negative | source/slang/slang-diagnostics.lua | [`30094-must-use-try-clause-to-call-a-throw-func.slang`](30094-must-use-try-clause-to-call-a-throw-func.slang) |
| Fires diagnostic E30095 (error-type-of-callee-incompatible-with-caller) - incompatible error types | negative | source/slang/slang-diagnostics.lua | [`30095-error-type-of-callee-incompatible-with-caller.slang`](30095-error-type-of-callee-incompatible-with-caller.slang) |
| Fires diagnostic E30097 (function-not-marked-as-differentiable) - function not differentiable | negative | source/slang/slang-diagnostics.lua | [`30097-function-not-marked-as-differentiable.slang`](30097-function-not-marked-as-differentiable.slang) |
| Fires diagnostic E30099 (size-of-argument-is-invalid) - invalid sizeof argument | negative | source/slang/slang-diagnostics.lua | [`30099-size-of-argument-is-invalid.slang`](30099-size-of-argument-is-invalid.slang) |
| Fires diagnostic E30100 (static-ref-to-non-static-member) - type cannot refer to non-static member | negative | source/slang/slang-diagnostics.lua | [`30100-static-ref-to-non-static-member.slang`](30100-static-ref-to-non-static-member.slang) |
| Fires diagnostic E30101 (cannot-dereference-type) - cannot dereference type | negative | source/slang/slang-diagnostics.lua | [`30101-cannot-dereference-type.slang`](30101-cannot-dereference-type.slang) |
| Fires diagnostic E30102 (decl-not-allowed) - declaration not allowed here | negative | source/slang/slang-diagnostics.lua | [`30102-decl-not-allowed.slang`](30102-decl-not-allowed.slang) |
| Fires diagnostic E30103 (expect-type-pack-after-each) - expected type pack after 'each' | negative | source/slang/slang-diagnostics.lua | [`30103-expect-type-pack-after-each.slang`](30103-expect-type-pack-after-each.slang) |
| Fires diagnostic E30104 (each-expr-must-be-inside-expand-expr) - 'each' must be inside 'expand' | negative | source/slang/slang-diagnostics.lua | [`30104-each-expr-must-be-inside-expand-expr.slang`](30104-each-expr-must-be-inside-expand-expr.slang) |
| Fires diagnostic E30106 (improper-use-of-type) - type cannot be used in this context | negative | source/slang/slang-diagnostics.lua | [`30106-improper-use-of-type.slang`](30106-improper-use-of-type.slang) |
| Fires diagnostic E30111 (return-type-mismatch-inside-lambda) - lambda return type mismatch | negative | source/slang/slang-diagnostics.lua | [`30111-return-type-mismatch-inside-lambda.slang`](30111-return-type-mismatch-inside-lambda.slang) |
| Fires diagnostic E30112 (non-copyable-type-captured-in-lambda) - non-copyable type captured | negative | source/slang/slang-diagnostics.lua | [`30112-non-copyable-type-captured-in-lambda.slang`](30112-non-copyable-type-captured-in-lambda.slang) |
| Fires diagnostic E30113 (uncaught-throw-inside-defer) - 'throw' requires 'catch' inside defer | negative | source/slang/slang-diagnostics.lua | [`30113-uncaught-throw-inside-defer.slang`](30113-uncaught-throw-inside-defer.slang) |
| Fires diagnostic E30114 (uncaught-try-inside-defer) - 'try' requires 'catch' inside defer | negative | source/slang/slang-diagnostics.lua | [`30114-uncaught-try-inside-defer.slang`](30114-uncaught-try-inside-defer.slang) |
| Fires diagnostic E30115 (uncaught-throw-in-non-throw-func) - uncaught throw in non-throwing function | negative | source/slang/slang-diagnostics.lua | [`30115-uncaught-throw-in-non-throw-func.slang`](30115-uncaught-throw-in-non-throw-func.slang) |
| Fires diagnostic E30116 (throw-type-incompatible-with-error-type) - throw type incompatible with error type | negative | source/slang/slang-diagnostics.lua | [`30116-throw-type-incompatible-with-error-type.slang`](30116-throw-type-incompatible-with-error-type.slang) |
| Fires diagnostic E30117 (forward-reference-in-generic-constraint) - forward reference in generic constraint | negative | source/slang/slang-diagnostics.lua | [`30117-forward-reference-in-generic-constraint.slang`](30117-forward-reference-in-generic-constraint.slang) |
| Fires diagnostic E30119 (reading-from-write-only) - cannot read from writeonly | negative | source/slang/slang-diagnostics.lua | [`30119-reading-from-write-only.slang`](30119-reading-from-write-only.slang) |
| Fires diagnostic E30120 (static-ref-to-this) - static function cannot refer to non-static member via `this` | negative | source/slang/slang-diagnostics.lua | [`30120-static-ref-to-this.slang`](30120-static-ref-to-this.slang) |
| Fires diagnostic E30122 (forward-reference-in-generic-default-initializer) - forward reference in generic default initializer | negative | source/slang/slang-diagnostics.lua | [`30122-forward-reference-in-generic-default-initializer.slang`](30122-forward-reference-in-generic-default-initializer.slang) |
| Fires diagnostic E30300 (is-operator-value-must-be-interface-type) - 'is'/'as' operator requires interface-typed expression | negative | source/slang/slang-diagnostics.lua | [`30300-is-operator-value-must-be-interface-type.slang`](30300-is-operator-value-must-be-interface-type.slang) |
| Fires diagnostic E30301 (is-operator-cannot-use-interface-as-rhs) - cannot use 'is' with interface on right-hand side | negative | source/slang/slang-diagnostics.lua | [`30301-is-operator-cannot-use-interface-as-rhs.slang`](30301-is-operator-cannot-use-interface-as-rhs.slang) |
| Fires diagnostic E30302 (as-operator-cannot-use-interface-as-rhs) - cannot use 'as' with interface on right-hand side | negative | source/slang/slang-diagnostics.lua | [`30302-as-operator-cannot-use-interface-as-rhs.slang`](30302-as-operator-cannot-use-interface-as-rhs.slang) |
| Fires diagnostic E30303 (value-requirement-must-be-compile-time-const) - value requirement requires static const | negative | source/slang/slang-diagnostics.lua | [`30303-value-requirement-must-be-compile-time-const.slang`](30303-value-requirement-must-be-compile-time-const.slang) |
| Fires diagnostic E30304 (is-as-on-unrelated-concrete-types) - 'is'/'as' on unrelated concrete types | negative | source/slang/slang-diagnostics.lua | [`30304-is-as-on-unrelated-concrete-types.slang`](30304-is-as-on-unrelated-concrete-types.slang) |
| Fires diagnostic E30305 (global-gen-param-in-global-scope-only) - type_param outside global scope | negative | source/slang/slang-diagnostics.lua | [`30305-global-gen-param-in-global-scope-only.slang`](30305-global-gen-param-in-global-scope-only.slang) |
| Fires diagnostic E30306 (static-const-requirement-must-be-int-or-bool) - invalid static const requirement type | negative | source/slang/slang-diagnostics.lua | [`30306-static-const-requirement-must-be-int-or-bool.slang`](30306-static-const-requirement-must-be-int-or-bool.slang) |
| Fires diagnostic E30310 (type-is-not-differentiable) - type is not differentiable | negative | source/slang/slang-diagnostics.lua | [`30310-type-is-not-differentiable.slang`](30310-type-is-not-differentiable.slang) |
| Fires diagnostic E30311 (type-cannot-conform-to-both-value-and-pointer-diff-interfaces) - type cannot conform to both value and pointer differentiation interfaces | negative | source/slang/slang-diagnostics.lua | [`30311-type-cannot-conform-to-both-value-and-pointer-diff-interfaces.slang`](30311-type-cannot-conform-to-both-value-and-pointer-diff-interfaces.slang) |
| Fires diagnostic E30312 (interface-requirement-cannot-be-override) - interface requirement cannot override | negative | source/slang/slang-diagnostics.lua | [`30312-interface-requirement-cannot-be-override.slang`](30312-interface-requirement-cannot-be-override.slang) |
| Fires diagnostic E30313 (treat-as-differentiable-on-interface-requirement) - [TreatAsDifferentiable] cannot be applied to interface requirement | negative | source/slang/slang-diagnostics.lua | [`30313-treat-as-differentiable-on-interface-requirement.slang`](30313-treat-as-differentiable-on-interface-requirement.slang) |
| Fires diagnostic E30314 (maybe-differentiable-on-non-interface-requirement) - [MaybeDifferentiable] cannot be applied to non-interface requirement | negative | source/slang/slang-diagnostics.lua | [`30314-maybe-differentiable-on-non-interface-requirement.slang`](30314-maybe-differentiable-on-non-interface-requirement.slang) |
| Fires diagnostic E30317 (non-method-interface-requirement-cannot-have-body) - interface requirement has body | negative | source/slang/slang-diagnostics.lua | [`30317-non-method-interface-requirement-cannot-have-body.slang`](30317-non-method-interface-requirement-cannot-have-body.slang) |
| Fires diagnostic E30509 (use-let-each-for-generic-value-pack-param) -- use 'let each' to declare a variadic generic value parameter: 'let each ~paramName:Name : ~type:Type' | negative | source/slang/slang-diagnostics.lua | [`30509-use-let-each-for-generic-value-pack-param.slang`](30509-use-let-each-for-generic-value-pack-param.slang) |
| Fires diagnostic E30510 (loop-in-diff-func-require-unroll-or-max-iters) -- loop in differentiable function needs attributes | negative | source/slang/slang-diagnostics.lua | [`30510-loop-in-diff-func-require-unroll-or-max-iters.slang`](30510-loop-in-diff-func-require-unroll-or-max-iters.slang) |
| Fires diagnostic E30513 (cannot-use-initializer-list-for-type) -- cannot use initializer list for type '~type:Type' | negative | source/slang/slang-diagnostics.lua | [`30513-cannot-use-initializer-list-for-type.slang`](30513-cannot-use-initializer-list-for-type.slang) |
| Fires diagnostic E30515 (generic-param-shadows-outer-generic) -- generic parameter '~param:Decl' shadows a generic parameter from an enclosing scope | negative | source/slang/slang-diagnostics.lua | [`30515-generic-param-shadows-outer-generic.slang`](30515-generic-param-shadows-outer-generic.slang) |
| Fires diagnostic E30516 (initializer-list-member-visibility-mismatch) -- member '~member:Decl' is ~memberVis:DeclVisibility, but '~type:Type' is ~structVis:DeclVisibility; all members must be ~structVis:DeclVisibility to use an initializer list | negative | source/slang/slang-diagnostics.lua | [`30516-initializer-list-member-visibility-mismatch.slang`](30516-initializer-list-member-visibility-mismatch.slang) |
| Fires diagnostic E30519 (for-loop-terminates-in-fewer-iterations-than-max-iters) -- MaxIters exceeds actual iterations | negative | source/slang/slang-diagnostics.lua | [`30519-for-loop-terminates-in-fewer-iterations-than-max-iters.slang`](30519-for-loop-terminates-in-fewer-iterations-than-max-iters.slang) |
| Fires diagnostic E30521 (interface-default-initializer) -- initializing an interface variable with defaults is deprecated and may cause unexpected behavior | negative | source/slang/slang-diagnostics.lua | [`30521-interface-default-initializer.slang`](30521-interface-default-initializer.slang) |
| Fires diagnostic E30620 (var-without-type-must-have-initializer) -- a variable declaration without an initial-value expression must be given an explicit type | negative | source/slang/slang-diagnostics.lua | [`30620-var-without-type-must-have-initializer.slang`](30620-var-without-type-must-have-initializer.slang) |
| Fires diagnostic E30622 (ambiguous-default-initializer-for-type) -- more than one default initializer was found for type '~type:Type' | negative | source/slang/slang-diagnostics.lua | [`30622-ambiguous-default-initializer-for-type.slang`](30622-ambiguous-default-initializer-for-type.slang) |
| Fires diagnostic E30625 (generic-value-parameter-must-have-type) -- a generic value parameter must be given an explicit type | negative | source/slang/slang-diagnostics.lua | [`30625-generic-value-parameter-must-have-type.slang`](30625-generic-value-parameter-must-have-type.slang) |
| Fires diagnostic E30700 (output-parameter-cannot-have-default-value) -- an 'out' or 'inout' parameter cannot have a default-value expression | negative | source/slang/slang-diagnostics.lua | [`30700-output-parameter-cannot-have-default-value.slang`](30700-output-parameter-cannot-have-default-value.slang) |
| Fires diagnostic E30702 (system-value-semantic-invalid-direction) -- system value semantic '~semantic' cannot be used as ~direction in '~stage' shader stage | negative | source/slang/slang-diagnostics.lua | [`30702-system-value-semantic-invalid-direction.slang`](30702-system-value-semantic-invalid-direction.slang) |
| Fires diagnostic E30703 (per-primitive-semantic-in-vertex-output) -- per-primitive system value semantic '~semantic' must be placed in an 'OutputPrimitives' (or 'out primitives') parameter, not in a vertex or index output | negative | source/slang/slang-diagnostics.lua | [`30703-per-primitive-semantic-in-vertex-output.slang`](30703-per-primitive-semantic-in-vertex-output.slang) |
| Fires diagnostic E30704 (parameter-without-default-after-parameter-with-default) -- parameter '~param:Decl' does not have a default value, but follows a parameter that does | negative | source/slang/slang-diagnostics.lua | [`30704-parameter-without-default-after-parameter-with-default.slang`](30704-parameter-without-default-after-parameter-with-default.slang) |
| Fires diagnostic E30810 (base-of-interface-must-be-interface) -- interface '~decl:Decl' cannot inherit from non-interface type '~baseType:Type' | negative | source/slang/slang-diagnostics.lua | [`30810-base-of-interface-must-be-interface.slang`](30810-base-of-interface-must-be-interface.slang) |
| Fires diagnostic E30811 (base-of-struct-must-be-interface) -- struct '~decl:Decl' cannot inherit from non-interface type '~baseType:Type' | negative | source/slang/slang-diagnostics.lua | [`30811-base-of-struct-must-be-interface.slang`](30811-base-of-struct-must-be-interface.slang) |
| Fires diagnostic E30813 (base-of-extension-must-be-interface) -- extension cannot inherit from non-interface type '~baseType:Type' | negative | source/slang/slang-diagnostics.lua | [`30813-base-of-extension-must-be-interface.slang`](30813-base-of-extension-must-be-interface.slang) |
| Fires diagnostic E30814 (base-of-class-must-be-class-or-interface) -- class '~decl:Decl' cannot inherit from type '~baseType:Type' that is neither a class nor an interface | negative | source/slang/slang-diagnostics.lua | [`30814-base-of-class-must-be-class-or-interface.slang`](30814-base-of-class-must-be-class-or-interface.slang) |
| Fires diagnostic E30816 (inheritance-unstable) -- support for inheritance is unstable and will be removed in future language versions, consider using composition instead | negative | source/slang/slang-diagnostics.lua | [`30816-inheritance-unstable.slang`](30816-inheritance-unstable.slang) |
| Fires diagnostic E30820 (base-struct-must-be-listed-first) -- a struct type may only inherit from one other struct type, and that type must appear first in the list of bases | negative | source/slang/slang-diagnostics.lua | [`30820-base-struct-must-be-listed-first.slang`](30820-base-struct-must-be-listed-first.slang) |
| Fires diagnostic E30821 (tag-type-must-be-listed-first) -- an enum type may only have a single tag type, and that type must be listed first in the list of bases | negative | source/slang/slang-diagnostics.lua | [`30821-tag-type-must-be-listed-first.slang`](30821-tag-type-must-be-listed-first.slang) |
| Fires diagnostic E30822 (base-class-must-be-listed-first) -- a class type may only inherit from one other class type, and that type must appear first in the list of bases | negative | source/slang/slang-diagnostics.lua | [`30822-base-class-must-be-listed-first.slang`](30822-base-class-must-be-listed-first.slang) |
| Fires diagnostic E30830 (cannot-inherit-from-explicitly-sealed-declaration-in-another-module) -- cannot inherit from type '~baseType:Type' marked 'sealed' in module '~moduleName:Name' | negative | source/slang/slang-diagnostics.lua | [`30830-cannot-inherit-from-explicitly-sealed-declaration-in-another-module.slang`](30830-cannot-inherit-from-explicitly-sealed-declaration-in-another-module.slang) |
| Fires diagnostic E30831 (cannot-inherit-from-implicitly-sealed-declaration-in-another-module) -- cannot inherit from type '~baseType:Type' in module '~moduleName:Name' because it is implicitly 'sealed' | negative | source/slang/slang-diagnostics.lua | [`30831-cannot-inherit-from-implicitly-sealed-declaration-in-another-module.slang`](30831-cannot-inherit-from-implicitly-sealed-declaration-in-another-module.slang) |
| Fires diagnostic E30832 (invalid-type-for-inheritance) -- type '~type:Type' cannot be used for inheritance | negative | source/slang/slang-diagnostics.lua | [`30832-invalid-type-for-inheritance.slang`](30832-invalid-type-for-inheritance.slang) |
| Fires diagnostic E30854 (override-modifier-not-overriding-base-decl) -- '~decl:Decl' marked as 'override' is not overriding any base declarations | negative | source/slang/slang-diagnostics.lua | [`30854-override-modifier-not-overriding-base-decl.slang`](30854-override-modifier-not-overriding-base-decl.slang) |
| Fires diagnostic E30901 (subscript-must-have-return-type) -- __subscript declaration must have a return type specified after '->' | negative | source/slang/slang-diagnostics.lua | [`30901-subscript-must-have-return-type.slang`](30901-subscript-must-have-return-type.slang) |
| Fires diagnostic E30902 (optional-cannot-wrap-resource-type) -- 'Optional<T>' cannot wrap a resource or opaque type | negative | source/slang/slang-diagnostics.lua | [`30902-optional-cannot-wrap-resource-type.slang`](30902-optional-cannot-wrap-resource-type.slang) |
| Fires diagnostic E31000 (unknown-attribute-name) -- unknown attribute | negative | source/slang/slang-diagnostics.lua | [`31000-unknown-attribute-name.slang`](31000-unknown-attribute-name.slang) |
| Fires diagnostic E31006 (attribute-function-not-found) -- function not found for attribute | negative | source/slang/slang-diagnostics.lua | [`31006-attribute-function-not-found.slang`](31006-attribute-function-not-found.slang) |
| Fires diagnostic E31010 (link-time-constant-array-size) -- Link-time constant sized arrays are a work in progress feature, some aspects of the reflection API may not work | negative | source/slang/slang-diagnostics.lua | [`31010-link-time-constant-array-size.slang`](31010-link-time-constant-array-size.slang) |
| Fires diagnostic E31101 (unknown-image-format-name) -- unknown image format | negative | source/slang/slang-diagnostics.lua | [`31101-unknown-image-format-name.slang`](31101-unknown-image-format-name.slang) |
| Fires diagnostic E31108 (set-accessor-may-not-have-more-than-one-param) -- a 'set' accessor may not have more than one parameter | negative | source/slang/slang-diagnostics.lua | [`31108-set-accessor-may-not-have-more-than-one-param.slang`](31108-set-accessor-may-not-have-more-than-one-param.slang) |
| Fires diagnostic E31109 (set-accessor-param-wrong-type) -- 'set' parameter type mismatch | negative | source/slang/slang-diagnostics.lua | [`31109-set-accessor-param-wrong-type.slang`](31109-set-accessor-param-wrong-type.slang) |
| Fires diagnostic E31112 (non-set-accessor-must-not-have-params) -- accessors other than 'set' must not have parameters | negative | source/slang/slang-diagnostics.lua | [`31112-non-set-accessor-must-not-have-params.slang`](31112-non-set-accessor-must-not-have-params.slang) |
| Fires diagnostic E31120 (invalid-attribute-target) -- invalid syntax target for user defined attribute | negative | source/slang/slang-diagnostics.lua | [`31120-invalid-attribute-target.slang`](31120-invalid-attribute-target.slang) |
| Fires diagnostic E31121 (any-value-size-exceeds-limit) -- 'anyValueSize' exceeds limit | negative | source/slang/slang-diagnostics.lua | [`31121-any-value-size-exceeds-limit.slang`](31121-any-value-size-exceeds-limit.slang) |
| Fires diagnostic E31122 (associated-type-not-allowed-in-com-interface) -- associatedtype not allowed in [COM] interface | negative | source/slang/slang-diagnostics.lua | [`31122-associated-type-not-allowed-in-com-interface.slang`](31122-associated-type-not-allowed-in-com-interface.slang) |
| Fires diagnostic E31123 (invalid-guid) -- invalid GUID | negative | source/slang/slang-diagnostics.lua | [`31123-invalid-guid.slang`](31123-invalid-guid.slang) |
| Fires diagnostic E31124 (struct-cannot-implement-com-interface) -- struct types cannot implement COM interfaces | negative | source/slang/slang-diagnostics.lua | [`31124-struct-cannot-implement-com-interface.slang`](31124-struct-cannot-implement-com-interface.slang) |
| Fires diagnostic E31125 (attribute-usage-attribute-must-be-on-non-generic-struct) -- [__AttributeUsage] requires non-generic struct | negative | source/slang/slang-diagnostics.lua | [`31125-attribute-usage-attribute-must-be-on-non-generic-struct.slang`](31125-attribute-usage-attribute-must-be-on-non-generic-struct.slang) |
| Fires diagnostic E31126 (interface-inheriting-com-must-be-com) -- non-COM interface inheriting from COM interface | negative | source/slang/slang-diagnostics.lua | [`31126-interface-inheriting-com-must-be-com.slang`](31126-interface-inheriting-com-must-be-com.slang) |
| Fires diagnostic E31132 (derivative-member-attribute-can-only-be-used-on-members) -- DerivativeMember on non-member | negative | source/slang/slang-diagnostics.lua | [`31132-derivative-member-attribute-can-only-be-used-on-members.slang`](31132-derivative-member-attribute-can-only-be-used-on-members.slang) |
| Fires diagnostic E31147 (cannot-resolve-original-function-for-derivative) -- cannot resolve original function for derivative | negative | source/slang/slang-diagnostics.lua | [`31147-cannot-resolve-original-function-for-derivative.slang`](31147-cannot-resolve-original-function-for-derivative.slang) |
| Fires diagnostic E31148 (cannot-resolve-derivative-function) -- cannot resolve derivative function | negative | source/slang/slang-diagnostics.lua | [`31148-cannot-resolve-derivative-function.slang`](31148-cannot-resolve-derivative-function.slang) |
| Fires diagnostic E31149 (custom-derivative-signature-mismatch-at-position) -- custom derivative parameter type mismatch | negative | source/slang/slang-diagnostics.lua | [`31149-custom-derivative-signature-mismatch-at-position.slang`](31149-custom-derivative-signature-mismatch-at-position.slang) |
| Fires diagnostic E31152 (cannot-associate-interface-requirement-with-derivative) -- interface requirement cannot have derivative | negative | source/slang/slang-diagnostics.lua | [`31152-cannot-associate-interface-requirement-with-derivative.slang`](31152-cannot-associate-interface-requirement-with-derivative.slang) |
| Fires diagnostic E31200 (deprecated-usage) -- use of deprecated declaration | negative | source/slang/slang-diagnostics.lua | [`31200-deprecated-usage.slang`](31200-deprecated-usage.slang) |
| Fires diagnostic E31201 (modifier-not-allowed) -- modifier not allowed | negative | source/slang/slang-diagnostics.lua | [`31201-modifier-not-allowed.slang`](31201-modifier-not-allowed.slang) |
| Fires diagnostic E31210 (derivative-group-quad-must-be-multiple-2-for-xy-threads) -- derivative group quad thread count error | negative | source/slang/slang-diagnostics.lua | [`31210-derivative-group-quad-must-be-multiple-2-for-xy-threads.slang`](31210-derivative-group-quad-must-be-multiple-2-for-xy-threads.slang) |
| Fires diagnostic E31211 (derivative-group-linear-must-be-multiple-4-for-total-thread-count) -- derivative group linear thread count error | negative | source/slang/slang-diagnostics.lua | [`31211-derivative-group-linear-must-be-multiple-4-for-total-thread-count.slang`](31211-derivative-group-linear-must-be-multiple-4-for-total-thread-count.slang) |
| Fires diagnostic E31212 (only-one-of-derivative-group-linear-or-quad-can-be-set) -- conflicting derivative group settings | negative | source/slang/slang-diagnostics.lua | [`31212-only-one-of-derivative-group-linear-or-quad-can-be-set.slang`](31212-only-one-of-derivative-group-linear-or-quad-can-be-set.slang) |
| Fires diagnostic E31213 (cuda-kernel-must-return-void) -- CUDA kernel return type error | negative | source/slang/slang-diagnostics.lua | [`31213-cuda-kernel-must-return-void.slang`](31213-cuda-kernel-must-return-void.slang) |
| Fires diagnostic E31215 (cannot-use-unsized-type-in-constant-buffer) -- unsized type in constant buffer | negative | source/slang/slang-diagnostics.lua | [`31215-cannot-use-unsized-type-in-constant-buffer.slang`](31215-cannot-use-unsized-type-in-constant-buffer.slang) |
| Fires diagnostic E31217 (unrecognized-glsl-layout-qualifier-or-requires-assignment) -- unrecognized GLSL layout qualifier | negative | source/slang/slang-diagnostics.lua | [`31217-unrecognized-glsl-layout-qualifier-or-requires-assignment.slang`](31217-unrecognized-glsl-layout-qualifier-or-requires-assignment.slang) |
| Fires diagnostic E31219 (push-or-specialization-constant-cannot-be-static) -- push/specialization constant storage class error | negative | source/slang/slang-diagnostics.lua | [`31219-push-or-specialization-constant-cannot-be-static.slang`](31219-push-or-specialization-constant-cannot-be-static.slang) |
| Fires diagnostic E31220 (variable-cannot-be-push-and-specialization-constant) -- conflicting constant qualifiers | negative | source/slang/slang-diagnostics.lua | [`31220-variable-cannot-be-push-and-specialization-constant.slang`](31220-variable-cannot-be-push-and-specialization-constant.slang) |
| Fires diagnostic E31222 (invalid-hlsl-register-name-for-type) -- invalid HLSL register name for type | negative | source/slang/slang-diagnostics.lua | [`31222-invalid-hlsl-register-name-for-type.slang`](31222-invalid-hlsl-register-name-for-type.slang) |
| Fires diagnostic E31223 (extern-and-export-var-decl-must-be-const) -- extern/export requires static const | negative | source/slang/slang-diagnostics.lua | [`31223-extern-and-export-var-decl-must-be-const.slang`](31223-extern-and-export-var-decl-must-be-const.slang) |
| Fires diagnostic E31224 (const-global-var-with-init-requires-static) -- global const requires static | negative | source/slang/slang-diagnostics.lua | [`31224-const-global-var-with-init-requires-static.slang`](31224-const-global-var-with-init-requires-static.slang) |
| Fires diagnostic E31225 (static-const-variable-requires-initializer) - missing initializer for static const | negative | source/slang/slang-diagnostics.lua | [`31225-static-const-variable-requires-initializer.slang`](31225-static-const-variable-requires-initializer.slang) |
| Fires diagnostic E31226 (static-const-global-non-constant-init) - static const global initializer must be a compile-time constant | negative | source/slang/slang-diagnostics.lua | [`31226-static-const-global-non-constant-init.slang`](31226-static-const-global-non-constant-init.slang) |
| Fires diagnostic E31230 (removed-modifier-usage) - use of removed modifier | negative | source/slang/slang-diagnostics.lua | [`31230-removed-modifier-usage.slang`](31230-removed-modifier-usage.slang) |
| Fires diagnostic E31400 (decl-not-allowed-in-context) - declaration not allowed in this context | negative | source/slang/slang-diagnostics.lua | [`31400-decl-not-allowed-in-context.slang`](31400-decl-not-allowed-in-context.slang) |
| Fires diagnostic E32000 (invalid-enum-tag-type) - invalid enum tag type | negative | source/slang/slang-diagnostics.lua | [`32000-invalid-enum-tag-type.slang`](32000-invalid-enum-tag-type.slang) |
| Fires diagnostic E32003 (unexpected-enum-tag-expr) - unexpected enum tag expression | negative | source/slang/slang-diagnostics.lua | [`32003-unexpected-enum-tag-expr.slang`](32003-unexpected-enum-tag-expr.slang) |
| Fires diagnostic E33070 (expected-function) - expected a function | negative | source/slang/slang-diagnostics.lua | [`33070-expected-function.slang`](33070-expected-function.slang) |
| Fires diagnostic E33072 (cannot-have-generic-dyn-interface) - dyn interfaces cannot be generic | negative | source/slang/slang-diagnostics.lua | [`33072-cannot-have-generic-dyn-interface.slang`](33072-cannot-have-generic-dyn-interface.slang) |
| Fires diagnostic E33073 (cannot-have-associated-type-in-dyn-interface) - dyn interfaces cannot have associatedType members | negative | source/slang/slang-diagnostics.lua | [`33073-cannot-have-associated-type-in-dyn-interface.slang`](33073-cannot-have-associated-type-in-dyn-interface.slang) |
| Fires diagnostic E33074 (cannot-have-generic-method-in-dyn-interface) - dyn interfaces cannot have generic methods | negative | source/slang/slang-diagnostics.lua | [`33074-cannot-have-generic-method-in-dyn-interface.slang`](33074-cannot-have-generic-method-in-dyn-interface.slang) |
| Fires diagnostic E33075 (cannot-have-mutating-method-in-dyn-interface) - dyn interfaces cannot have [mutating] methods | negative | source/slang/slang-diagnostics.lua | [`33075-cannot-have-mutating-method-in-dyn-interface.slang`](33075-cannot-have-mutating-method-in-dyn-interface.slang) |
| Fires diagnostic E33076 (cannot-have-differentiable-method-in-dyn-interface) - dyn interfaces cannot have [Differentiable] methods | negative | source/slang/slang-diagnostics.lua | [`33076-cannot-have-differentiable-method-in-dyn-interface.slang`](33076-cannot-have-differentiable-method-in-dyn-interface.slang) |
| Fires diagnostic E33077 (dyn-interface-cannot-inherit-non-dyn-interface) - dyn interface inheritance error | negative | source/slang/slang-diagnostics.lua | [`33077-dyn-interface-cannot-inherit-non-dyn-interface.slang`](33077-dyn-interface-cannot-inherit-non-dyn-interface.slang) |
| Fires diagnostic E33078 (cannot-use-extension-to-make-type-conform-to-dyn-interface) - extension cannot conform to dyn interface | negative | source/slang/slang-diagnostics.lua | [`33078-cannot-use-extension-to-make-type-conform-to-dyn-interface.slang`](33078-cannot-use-extension-to-make-type-conform-to-dyn-interface.slang) |
| Fires diagnostic E33079 (cannot-have-unsized-member-when-inheriting-dyn-interface) - unsized member with dyn interface inheritance | negative | source/slang/slang-diagnostics.lua | [`33079-cannot-have-unsized-member-when-inheriting-dyn-interface.slang`](33079-cannot-have-unsized-member-when-inheriting-dyn-interface.slang) |
| Fires diagnostic E33080 (cannot-have-opaque-member-when-inheriting-dyn-interface) - opaque member with dyn interface inheritance | negative | source/slang/slang-diagnostics.lua | [`33080-cannot-have-opaque-member-when-inheriting-dyn-interface.slang`](33080-cannot-have-opaque-member-when-inheriting-dyn-interface.slang) |
| Fires diagnostic E33081 (cannot-have-non-copyable-member-when-inheriting-dyn-interface) - non-copyable member with dyn interface inheritance | negative | source/slang/slang-diagnostics.lua | [`33081-cannot-have-non-copyable-member-when-inheriting-dyn-interface.slang`](33081-cannot-have-non-copyable-member-when-inheriting-dyn-interface.slang) |
| Fires diagnostic E33082 (cannot-conform-generic-to-dyn-interface) - generic type cannot conform to dyn interface | negative | source/slang/slang-diagnostics.lua | [`33082-cannot-conform-generic-to-dyn-interface.slang`](33082-cannot-conform-generic-to-dyn-interface.slang) |
| Fires diagnostic E33180 (cannot-specialize-generic-with-existential) - cannot specialize generic with existential type | negative | source/slang/slang-diagnostics.lua | [`33180-cannot-specialize-generic-with-existential.slang`](33180-cannot-specialize-generic-with-existential.slang) |
| Fires diagnostic E36005 (invalid-visibility-modifier-on-type-of-decl) - visibility modifier not allowed | negative | source/slang/slang-diagnostics.lua | [`36005-invalid-visibility-modifier-on-type-of-decl.slang`](36005-invalid-visibility-modifier-on-type-of-decl.slang) |
| Fires diagnostic E36100 (conflicting-capability-due-to-use-of-decl) - conflicting capability requirement | negative | source/slang/slang-diagnostics.lua | [`36100-conflicting-capability-due-to-use-of-decl.slang`](36100-conflicting-capability-due-to-use-of-decl.slang) |
| Fires diagnostic E36101 (conflicting-capability-due-to-statement) - conflicting capability requirement | negative | source/slang/slang-diagnostics.lua | [`36101-conflicting-capability-due-to-statement.slang`](36101-conflicting-capability-due-to-statement.slang) |
| Fires diagnostic E36104 (use-of-undeclared-capability) - undeclared capability used | negative | source/slang/slang-diagnostics.lua | [`36104-use-of-undeclared-capability.slang`](36104-use-of-undeclared-capability.slang) |
| Fires diagnostic E36105 (unknown-capability) - unknown capability | negative | source/slang/slang-diagnostics.lua | [`36105-unknown-capability.slang`](36105-unknown-capability.slang) |
| Fires diagnostic E36106 (expect-capability) - expect a capability name | negative | source/slang/slang-diagnostics.lua | [`36106-expect-capability.slang`](36106-expect-capability.slang) |
| Fires diagnostic E36108 (decl-has-dependencies-not-compatible-on-target) - dependencies not compatible on target | negative | source/slang/slang-diagnostics.lua | [`36108-decl-has-dependencies-not-compatible-on-target.slang`](36108-decl-has-dependencies-not-compatible-on-target.slang) |
| Fires diagnostic E36109 (invalid-target-switch-case) - invalid target_switch case | negative | source/slang/slang-diagnostics.lua | [`36109-invalid-target-switch-case.slang`](36109-invalid-target-switch-case.slang) |
| Fires diagnostic E36110 (use-of-undeclared-capability-of-interface-requirement) - capability incompatible with interface | negative | source/slang/slang-diagnostics.lua | [`36110-use-of-undeclared-capability-of-interface-requirement.slang`](36110-use-of-undeclared-capability-of-interface-requirement.slang) |
| Fires diagnostic E36114 (use-of-undeclared-capability-of-inheritance-decl) - capability incompatible with supertype | negative | source/slang/slang-diagnostics.lua | [`36114-use-of-undeclared-capability-of-inheritance-decl.slang`](36114-use-of-undeclared-capability-of-inheritance-decl.slang) |
| Fires diagnostic E36116 (capability-has-multiple-stages) - capability targets multiple stages | negative | source/slang/slang-diagnostics.lua | [`36116-capability-has-multiple-stages.slang`](36116-capability-has-multiple-stages.slang) |
| Fires diagnostic E36117 (decl-has-dependencies-not-compatible-on-stage) - dependencies not compatible on stage | negative | source/slang/slang-diagnostics.lua | [`36117-decl-has-dependencies-not-compatible-on-stage.slang`](36117-decl-has-dependencies-not-compatible-on-stage.slang) |
| Fires diagnostic E36118 (sub-type-has-subset-of-abstract-atoms-to-super-type) - subtype missing target/stage support | negative | source/slang/slang-diagnostics.lua | [`36118-sub-type-has-subset-of-abstract-atoms-to-super-type.slang`](36118-sub-type-has-subset-of-abstract-atoms-to-super-type.slang) |
| Fires diagnostic E36119 (requirment-has-subset-of-abstract-atoms-to-implementation) - requirement missing target/stage support | negative | source/slang/slang-diagnostics.lua | [`36119-requirment-has-subset-of-abstract-atoms-to-implementation.slang`](36119-requirment-has-subset-of-abstract-atoms-to-implementation.slang) |
| Fires diagnostic E36120 (target-switch-cap-cases-conflict) - capability cases conflict in target_switch | negative | source/slang/slang-diagnostics.lua | [`36120-target-switch-cap-cases-conflict.slang`](36120-target-switch-cap-cases-conflict.slang) |
| Fires diagnostic E38000 (entry-point-function-not-found) - no function found matching entry point name | negative | source/slang/slang-diagnostics.lua | [`38000-entry-point-function-not-found.slang`](38000-entry-point-function-not-found.slang) |
| Fires diagnostic E38011 (entry-point-cannot-return-resource-type) - entry point cannot return type that contains resource types | negative | source/slang/slang-diagnostics.lua | [`38011-entry-point-cannot-return-resource-type.slang`](38011-entry-point-cannot-return-resource-type.slang) |
| Fires diagnostic E38012 (entry-point-cannot-return-array-type) - entry point cannot return array type | negative | source/slang/slang-diagnostics.lua | [`38012-entry-point-cannot-return-array-type.slang`](38012-entry-point-cannot-return-array-type.slang) |
| Fires diagnostic E38024 (invalid-dispatch-thread-id-type) - invalid SV_DispatchThreadID type | negative | source/slang/slang-diagnostics.lua | [`38024-invalid-dispatch-thread-id-type.slang`](38024-invalid-dispatch-thread-id-type.slang) |
| Fires diagnostic E38029 (type-argument-does-not-conform-to-interface) - type argument doesn't conform to interface | negative | source/slang/slang-diagnostics.lua | [`38029-type-argument-does-not-conform-to-interface.slang`](38029-type-argument-does-not-conform-to-interface.slang) |
| Fires diagnostic E38031 (invalid-use-of-no-diff) - invalid 'no_diff' usage | negative | source/slang/slang-diagnostics.lua | [`38031-invalid-use-of-no-diff.slang`](38031-invalid-use-of-no-diff.slang) |
| Fires diagnostic E38033 (cannot-use-no-diff-in-non-differentiable-func) - 'no_diff' in non-differentiable function | negative | source/slang/slang-diagnostics.lua | [`38033-cannot-use-no-diff-in-non-differentiable-func.slang`](38033-cannot-use-no-diff-in-non-differentiable-func.slang) |
| Fires diagnostic E38034 (cannot-use-borrow-in-on-differentiable-parameter) - 'borrow in' on differentiable parameter | negative | source/slang/slang-diagnostics.lua | [`38034-cannot-use-borrow-in-on-differentiable-parameter.slang`](38034-cannot-use-borrow-in-on-differentiable-parameter.slang) |
| Fires diagnostic E38036 (cannot-use-constref-on-differentiable-member-method) - '[constref]' on differentiable member method | negative | source/slang/slang-diagnostics.lua | [`38036-cannot-use-constref-on-differentiable-member-method.slang`](38036-cannot-use-constref-on-differentiable-member-method.slang) |
| Fires diagnostic E38041 (int-val-from-non-int-spec-const-encountered) - cannot cast non-integer specialization constant to integer | negative | source/slang/slang-diagnostics.lua | [`38041-int-val-from-non-int-spec-const-encountered.slang`](38041-int-val-from-non-int-spec-const-encountered.slang) |
| Fires diagnostic E38042 (implicit-type-coerce-constraint-with-non-implicit-conversion) - implicit conversion constraint not satisfied | negative | source/slang/slang-diagnostics.lua | [`38042-implicit-type-coerce-constraint-with-non-implicit-conversion.slang`](38042-implicit-type-coerce-constraint-with-non-implicit-conversion.slang) |
| Fires diagnostic E38043 (type-coerce-constraint-missing-conversion) - type coerce constraint not satisfied | negative | source/slang/slang-diagnostics.lua | [`38043-type-coerce-constraint-missing-conversion.slang`](38043-type-coerce-constraint-missing-conversion.slang) |
| Fires diagnostic E38045 (geometry-shader-missing-output-stream) - geometry shader missing output stream parameter | negative | source/slang/slang-diagnostics.lua | [`38045-geometry-shader-missing-output-stream.slang`](38045-geometry-shader-missing-output-stream.slang) |
| Fires diagnostic E38046 (geometry-shader-missing-max-vertex-count) - geometry shader missing [maxvertexcount] attribute | negative | source/slang/slang-diagnostics.lua | [`38046-geometry-shader-missing-max-vertex-count.slang`](38046-geometry-shader-missing-max-vertex-count.slang) |
| Fires diagnostic E38047 (mesh-shader-missing-output-topology) - mesh shader missing [outputtopology] attribute | negative | source/slang/slang-diagnostics.lua | [`38047-mesh-shader-missing-output-topology.slang`](38047-mesh-shader-missing-output-topology.slang) |
| Fires diagnostic E38048 (mesh-shader-missing-outputs) - mesh shader missing OutputVertices/OutputIndices output | negative | source/slang/slang-diagnostics.lua | [`38048-mesh-shader-missing-outputs.slang`](38048-mesh-shader-missing-outputs.slang) |
| Fires diagnostic E38050 (invalid-entry-point-varying-type) - type cannot be used as entry-point varying parameter or return type | negative | source/slang/slang-diagnostics.lua | [`38050-invalid-entry-point-varying-type.slang`](38050-invalid-entry-point-varying-type.slang) |
| Fires diagnostic E38051 (invalid-entry-point-varying-type-for-target) - type cannot be used as entry-point varying for this target | negative | source/slang/slang-diagnostics.lua | [`38051-invalid-entry-point-varying-type-for-target.slang`](38051-invalid-entry-point-varying-type-for-target.slang) |
| Fires diagnostic E38100 (type-doesnt-implement-interface-requirement) - missing interface member | negative | source/slang/slang-diagnostics.lua | [`38100-type-doesnt-implement-interface-requirement.slang`](38100-type-doesnt-implement-interface-requirement.slang) |
| Fires diagnostic E38101 (this-expression-outside-of-type-decl) - 'this' used outside aggregate type | negative | source/slang/slang-diagnostics.lua | [`38101-this-expression-outside-of-type-decl.slang`](38101-this-expression-outside-of-type-decl.slang) |
| Fires diagnostic E38103 (this-type-outside-of-type-decl) - 'This' used outside aggregate type | negative | source/slang/slang-diagnostics.lua | [`38103-this-type-outside-of-type-decl.slang`](38103-this-type-outside-of-type-decl.slang) |
| Fires diagnostic E38104 (return-val-not-available) - '__return_val' not available | negative | source/slang/slang-diagnostics.lua | [`38104-return-val-not-available.slang`](38104-return-val-not-available.slang) |
| Fires diagnostic E38105 (member-does-not-match-requirement-signature) - interface requirement mismatch | negative | source/slang/slang-diagnostics.lua | [`38105-member-does-not-match-requirement-signature.slang`](38105-member-does-not-match-requirement-signature.slang) |
| Fires diagnostic E38106 (member-return-type-mismatch) - return type mismatch | negative | source/slang/slang-diagnostics.lua | [`38106-member-return-type-mismatch.slang`](38106-member-return-type-mismatch.slang) |
| Fires diagnostic E38107 (generic-signature-does-not-match-requirement) - generic signature mismatch | negative | source/slang/slang-diagnostics.lua | [`38107-generic-signature-does-not-match-requirement.slang`](38107-generic-signature-does-not-match-requirement.slang) |
| Fires diagnostic E38108 (parameter-direction-does-not-match-requirement) - parameter direction mismatch | negative | source/slang/slang-diagnostics.lua | [`38108-parameter-direction-does-not-match-requirement.slang`](38108-parameter-direction-does-not-match-requirement.slang) |
| Fires diagnostic E38201 (glsl-module-not-available) - 'glsl' module not available | negative | source/slang/slang-diagnostics.lua | [`38201-glsl-module-not-available.slang`](38201-glsl-module-not-available.slang) |
| Fires diagnostic E38203 (vector-with-disallowed-element-type-encountered) - disallowed vector element type | negative | source/slang/slang-diagnostics.lua | [`38203-vector-with-disallowed-element-type-encountered.slang`](38203-vector-with-disallowed-element-type-encountered.slang) |
| Fires diagnostic E38204 (cannot-use-resource-type-in-structured-buffer) - resource type in StructuredBuffer | negative | source/slang/slang-diagnostics.lua | [`38204-cannot-use-resource-type-in-structured-buffer.slang`](38204-cannot-use-resource-type-in-structured-buffer.slang) |
| Fires diagnostic E38205 (recursive-types-found-in-structured-buffer) - recursive type in structured buffer | negative | source/slang/slang-diagnostics.lua | [`38205-recursive-types-found-in-structured-buffer.slang`](38205-recursive-types-found-in-structured-buffer.slang) |
| Fires diagnostic E38206 (vector-with-invalid-element-count-encountered) - invalid vector element count | negative | source/slang/slang-diagnostics.lua | [`38206-vector-with-invalid-element-count-encountered.slang`](38206-vector-with-invalid-element-count-encountered.slang) |
| Fires diagnostic E39007 (unknown-register-class) - unknown register class | negative | source/slang/slang-diagnostics.lua | [`39007-unknown-register-class.slang`](39007-unknown-register-class.slang) |
| Fires diagnostic E39008 (expected-a-register-index) - expected a register index | negative | source/slang/slang-diagnostics.lua | [`39008-expected-a-register-index.slang`](39008-expected-a-register-index.slang) |
| Fires diagnostic E39009 (expected-space) - expected 'space' | negative | source/slang/slang-diagnostics.lua | [`39009-expected-space.slang`](39009-expected-space.slang) |
| Fires diagnostic E39010 (expected-space-index) - expected a register space index after 'space' | negative | source/slang/slang-diagnostics.lua | [`39010-expected-space-index.slang`](39010-expected-space-index.slang) |
| Fires diagnostic E39011 (invalid-component-mask) - invalid register component mask | negative | source/slang/slang-diagnostics.lua | [`39011-invalid-component-mask.slang`](39011-invalid-component-mask.slang) |
| Fires diagnostic E39014 (unexpected-specifier-after-space) - unexpected specifier after register space | negative | source/slang/slang-diagnostics.lua | [`39014-unexpected-specifier-after-space.slang`](39014-unexpected-specifier-after-space.slang) |
| Fires diagnostic E39015 (whole-space-parameter-requires-zero-binding) - whole descriptor set requires binding 0 | negative | source/slang/slang-diagnostics.lua | [`39015-whole-space-parameter-requires-zero-binding.slang`](39015-whole-space-parameter-requires-zero-binding.slang) |
| Fires diagnostic E39017 (dont-expect-out-parameters-for-stage) - stage does not support out/inout parameters | negative | source/slang/slang-diagnostics.lua | [`39017-dont-expect-out-parameters-for-stage.slang`](39017-dont-expect-out-parameters-for-stage.slang) |
| Fires diagnostic E39018 (dont-expect-in-parameters-for-stage) - stage does not support in parameters | negative | source/slang/slang-diagnostics.lua | [`39018-dont-expect-in-parameters-for-stage.slang`](39018-dont-expect-in-parameters-for-stage.slang) |
| Fires diagnostic E39020 (too-many-shader-record-constant-buffers) - too many shader record constant buffers | negative | source/slang/slang-diagnostics.lua | [`39020-too-many-shader-record-constant-buffers.slang`](39020-too-many-shader-record-constant-buffers.slang) |
| Fires diagnostic E39023 (mixing-implicit-and-explicit-binding-for-varying-params) - mixing implicit and explicit varying bindings | negative | source/slang/slang-diagnostics.lua | [`39023-mixing-implicit-and-explicit-binding-for-varying-params.slang`](39023-mixing-implicit-and-explicit-binding-for-varying-params.slang) |
| Fires diagnostic E39026 (matrix-layout-modifier-on-non-matrix-type) - matrix layout modifier on non-matrix type | negative | source/slang/slang-diagnostics.lua | [`39026-matrix-layout-modifier-on-non-matrix-type.slang`](39026-matrix-layout-modifier-on-non-matrix-type.slang) |
| Fires diagnostic E39027 (get-attribute-at-vertex-must-refer-to-per-vertex-input) - 'GetAttributeAtVertex' must reference vertex input | negative | source/slang/slang-diagnostics.lua | [`39027-get-attribute-at-vertex-must-refer-to-per-vertex-input.slang`](39027-get-attribute-at-vertex-must-refer-to-per-vertex-input.slang) |
| Fires diagnostic E39028 (not-valid-varying-parameter) - not a valid varying parameter | negative | source/slang/slang-diagnostics.lua | [`39028-not-valid-varying-parameter.slang`](39028-not-valid-varying-parameter.slang) |
| Fires diagnostic E39030 (target-does-not-support-descriptor-handle) - target does not support 'DescriptorHandle' types | negative | source/slang/slang-diagnostics.lua | [`39030-target-does-not-support-descriptor-handle.slang`](39030-target-does-not-support-descriptor-handle.slang) |
| Fires diagnostic E40000 (ray-payload-field-missing-access-qualifiers) - ray payload field missing access qualifiers | negative | source/slang/slang-diagnostics.lua | [`40000-ray-payload-field-missing-access-qualifiers.slang`](40000-ray-payload-field-missing-access-qualifiers.slang) |
| Fires diagnostic E40001 (ray-payload-invalid-stage-in-access-qualifier) - invalid stage name in ray payload access qualifier | negative | source/slang/slang-diagnostics.lua | [`40001-ray-payload-invalid-stage-in-access-qualifier.slang`](40001-ray-payload-invalid-stage-in-access-qualifier.slang) |
| Fires diagnostic E40006 (unimplemented-system-value-semantic) - unknown system-value semantic | negative | source/slang/slang-diagnostics.lua | [`40006-unimplemented-system-value-semantic.slang`](40006-unimplemented-system-value-semantic.slang) |
| Fires diagnostic E40008 (invalid-l-value-for-ref-parameter) - the form of this l-value argument is not valid for a `ref` parameter | negative | source/slang/slang-diagnostics.lua | [`40008-invalid-l-value-for-ref-parameter.slang`](40008-invalid-l-value-for-ref-parameter.slang) |
| Fires diagnostic E40012 (need-compile-time-constant) - expected a compile-time constant | negative | source/slang/slang-diagnostics.lua | [`40012-need-compile-time-constant.slang`](40012-need-compile-time-constant.slang) |
| Fires diagnostic E40013 (arg-is-not-constexpr) - argument is not a compile-time constant | negative | source/slang/slang-diagnostics.lua | [`40013-arg-is-not-constexpr.slang`](40013-arg-is-not-constexpr.slang) |
| Fires diagnostic E40016 (integer-constant-overflow) - integer constant overflow in conversion | negative | source/slang/slang-diagnostics.lua | [`40016-integer-constant-overflow.slang`](40016-integer-constant-overflow.slang) |
| Fires diagnostic E40020 (cannot-unroll-loop) - loop unrolling failed | negative | source/slang/slang-diagnostics.lua | [`40020-cannot-unroll-loop.slang`](40020-cannot-unroll-loop.slang) |
| Fires diagnostic E41000 (unreachable-code) - unreachable code detected | negative | source/slang/slang-diagnostics.lua | [`41000-unreachable-code.slang`](41000-unreachable-code.slang) |
| Fires diagnostic E41001 (recursive-type) - type contains cyclic reference | negative | source/slang/slang-diagnostics.lua | [`41001-recursive-type.slang`](41001-recursive-type.slang) |
| Fires diagnostic E41015 (using-uninitialized-out) - use of uninitialized out parameter | negative | source/slang/slang-diagnostics.lua | [`41015-using-uninitialized-out.slang`](41015-using-uninitialized-out.slang) |
| Fires diagnostic E41016 (using-uninitialized-variable) - use of uninitialized variable | negative | source/slang/slang-diagnostics.lua | [`41016-using-uninitialized-variable.slang`](41016-using-uninitialized-variable.slang) |
| Fires diagnostic E41017 (using-uninitialized-global-variable) - use of uninitialized global variable | negative | source/slang/slang-diagnostics.lua | [`41017-using-uninitialized-global-variable.slang`](41017-using-uninitialized-global-variable.slang) |
| Fires diagnostic E41018 (returning-with-uninitialized-out) - returning without initializing out parameter | negative | source/slang/slang-diagnostics.lua | [`41018-returning-with-uninitialized-out.slang`](41018-returning-with-uninitialized-out.slang) |
| Fires diagnostic E41019 (type-does-not-fit-any-value-size) - type does not fit in size required by interface | negative | source/slang/slang-diagnostics.lua | [`41019-type-does-not-fit-any-value-size.slang`](41019-type-does-not-fit-any-value-size.slang) |
| Fires diagnostic E41020 (constructor-uninitialized-field) - exiting constructor without initializing field | negative | source/slang/slang-diagnostics.lua | [`41020-constructor-uninitialized-field.slang`](41020-constructor-uninitialized-field.slang) |
| Fires diagnostic E41022 (loss-of-derivative-due-to-call-of-non-differentiable-function) - derivative cannot be propagated through non-differentiable call | negative | source/slang/slang-diagnostics.lua | [`41022-loss-of-derivative-due-to-call-of-non-differentiable-function.slang`](41022-loss-of-derivative-due-to-call-of-non-differentiable-function.slang) |
| Fires diagnostic E41027 (accessing-value-of-none-optional) - accessing .value on an Optional that is always none | negative | source/slang/slang-diagnostics.lua | [`41027-accessing-value-of-none-optional.slang`](41027-accessing-value-of-none-optional.slang) |
| Fires diagnostic E41031 (loss-of-derivative-assigning-to-non-differentiable-location) - derivative is lost during assignment | negative | source/slang/slang-diagnostics.lua | [`41031-loss-of-derivative-assigning-to-non-differentiable-location.slang`](41031-loss-of-derivative-assigning-to-non-differentiable-location.slang) |
| Fires diagnostic E41201 (expect-dynamic-uniform-argument) - argument might not be dynamic uniform | negative | source/slang/slang-diagnostics.lua | [`41201-expect-dynamic-uniform-argument.slang`](41201-expect-dynamic-uniform-argument.slang) |
| Fires diagnostic E41202 (not-equal-bit-cast-size) - bit_cast size mismatch | negative | source/slang/slang-diagnostics.lua | [`41202-not-equal-bit-cast-size.slang`](41202-not-equal-bit-cast-size.slang) |
| Fires diagnostic E41203 (expect-dynamic-uniform-value) - value must be dynamic uniform | negative | source/slang/slang-diagnostics.lua | [`41203-expect-dynamic-uniform-value.slang`](41203-expect-dynamic-uniform-value.slang) |
| Fires diagnostic E41204 (bit-cast-to-non-concrete-type) - cannot bit-cast to existential (non-concrete) type | negative | source/slang/slang-diagnostics.lua | [`41204-bit-cast-to-non-concrete-type.slang`](41204-bit-cast-to-non-concrete-type.slang) |
| Fires diagnostic E41400 (static-assertion-failure) - static assertion failed | negative | source/slang/slang-diagnostics.lua | [`41400-static-assertion-failure.slang`](41400-static-assertion-failure.slang) |
| Fires diagnostic E41401 (static-assertion-failure-without-message) - static assertion failed | negative | source/slang/slang-diagnostics.lua | [`41401-static-assertion-failure-without-message.slang`](41401-static-assertion-failure-without-message.slang) |
| Fires diagnostic E41402 (static-assertion-condition-not-constant) - static assertion condition not compile-time constant | negative | source/slang/slang-diagnostics.lua | [`41402-static-assertion-condition-not-constant.slang`](41402-static-assertion-condition-not-constant.slang) |
| Fires diagnostic E41403 (invalid-atomic-destination-pointer) - invalid atomic destination | negative | source/slang/slang-diagnostics.lua | [`41403-invalid-atomic-destination-pointer.slang`](41403-invalid-atomic-destination-pointer.slang) |
| Fires diagnostic E42050 (potential-issues-with-prefer-recompute-on-side-effect-method) - [PreferRecompute] on function with side effects | negative | source/slang/slang-diagnostics.lua | [`42050-potential-issues-with-prefer-recompute-on-side-effect-method.slang`](42050-potential-issues-with-prefer-recompute-on-side-effect-method.slang) |
| Fires diagnostic E45001 (unresolved-symbol) - unresolved external symbol | negative | source/slang/slang-diagnostics.lua | [`45001-unresolved-symbol.slang`](45001-unresolved-symbol.slang) |
| Fires diagnostic E45100 (coverage-buffer-reserved-name) - `__slang_coverage` is reserved by `-trace-coverage` | negative | source/slang/slang-diagnostics.lua | [`45100-coverage-buffer-reserved-name.slang`](45100-coverage-buffer-reserved-name.slang) |
| Fires diagnostic E45102 (coverage-target-not-supported) - `-trace-coverage` is not supported on this target; coverage instrumentation skipped | negative | source/slang/slang-diagnostics.lua | [`45102-coverage-target-not-supported.slang`](45102-coverage-target-not-supported.slang) |
| Fires diagnostic E45104 (coverage-pass-through-incompatible) - `-trace-coverage` cannot be combined with `-pass-through` | negative | source/slang/slang-diagnostics.lua | [`45104-coverage-pass-through-incompatible.slang`](45104-coverage-pass-through-incompatible.slang) |
| Fires diagnostic E49999 (unknown-system-value-semantic) - unknown system-value semantic | negative | source/slang/slang-diagnostics.lua | [`49999-unknown-system-value-semantic.slang`](49999-unknown-system-value-semantic.slang) |
| Fires diagnostic E50011 (spirv-version-not-supported) - SPIR-V version too old | negative | source/slang/slang-diagnostics.lua | [`50011-spirv-version-not-supported.slang`](50011-spirv-version-not-supported.slang) |
| Fires diagnostic E50060 (invalid-mesh-stage-output-topology) - invalid mesh output topology | negative | source/slang/slang-diagnostics.lua | [`50060-invalid-mesh-stage-output-topology.slang`](50060-invalid-mesh-stage-output-topology.slang) |
| Fires diagnostic E50100 (no-type-conformances-found-for-interface) - no type conformances found | negative | source/slang/slang-diagnostics.lua | [`50100-no-type-conformances-found-for-interface.slang`](50100-no-type-conformances-found-for-interface.slang) |
| Fires diagnostic E50101 (dynamic-dispatch-on-potentially-uninitialized-existential) - cannot dispatch on uninitialized interface | negative | source/slang/slang-diagnostics.lua | [`50101-dynamic-dispatch-on-potentially-uninitialized-existential.slang`](50101-dynamic-dispatch-on-potentially-uninitialized-existential.slang) |
| Fires diagnostic E52001 (dxil-not-found) - dxil library not found | negative | source/slang/slang-diagnostics.lua | [`52001-dxil-not-found.slang`](52001-dxil-not-found.slang) |
| Fires diagnostic E52002 (pass-through-compiler-not-found) - pass-through compiler not found | negative | source/slang/slang-diagnostics.lua | [`52002-pass-through-compiler-not-found.slang`](52002-pass-through-compiler-not-found.slang) |
| Fires diagnostic E52009 (cannot-emit-reflection-without-target) - cannot emit reflection JSON | negative | source/slang/slang-diagnostics.lua | [`52009-cannot-emit-reflection-without-target.slang`](52009-cannot-emit-reflection-without-target.slang) |
| Fires diagnostic E54001 (mesh-output-must-be-out) - mesh output must be out | negative | source/slang/slang-diagnostics.lua | [`54001-mesh-output-must-be-out.slang`](54001-mesh-output-must-be-out.slang) |
| Fires diagnostic E54002 (mesh-output-must-be-array) - mesh output must be array | negative | source/slang/slang-diagnostics.lua | [`54002-mesh-output-must-be-array.slang`](54002-mesh-output-must-be-array.slang) |
| Fires diagnostic E54003 (mesh-output-array-must-have-size) - mesh output array must have size | negative | source/slang/slang-diagnostics.lua | [`54003-mesh-output-array-must-have-size.slang`](54003-mesh-output-array-must-have-size.slang) |
| Fires diagnostic E55200 (unsupported-builtin-type) - unsupported builtin type | negative | source/slang/slang-diagnostics.lua | [`55200-unsupported-builtin-type.slang`](55200-unsupported-builtin-type.slang) |
| Fires diagnostic E56102 (division-by-matrix-not-supported) - division by matrix not supported | negative | source/slang/slang-diagnostics.lua | [`56102-division-by-matrix-not-supported.slang`](56102-division-by-matrix-not-supported.slang) |
| Fires diagnostic E56103 (int16-not-supported-in-wgsl) - 16-bit integers not supported in WGSL | negative | source/slang/slang-diagnostics.lua | [`56103-int16-not-supported-in-wgsl.slang`](56103-int16-not-supported-in-wgsl.slang) |
| Fires diagnostic E56105 (array-of-resource-type-not-supported-in-wgsl) - array of resource types not supported in WGSL | negative | source/slang/slang-diagnostics.lua | [`56105-array-of-resource-type-not-supported-in-wgsl.slang`](56105-array-of-resource-type-not-supported-in-wgsl.slang) |
| Fires diagnostic E57004 (output-spv-is-empty) - SPIR-V output contains no exported symbols | negative | source/slang/slang-diagnostics.lua | [`57004-output-spv-is-empty.slang`](57004-output-spv-is-empty.slang) |
| Fires diagnostic E58001 (entry-point-must-return-void-when-global-output-present) - entry point must return void with global outputs | negative | source/slang/slang-diagnostics.lua | [`58001-entry-point-must-return-void-when-global-output-present.slang`](58001-entry-point-must-return-void-when-global-output-present.slang) |
| Fires diagnostic E99996 (note-failed-to-load-dynamic-library) - failed to load dynamic library | negative | source/slang/slang-diagnostics.lua | [`99996-note-failed-to-load-dynamic-library.slang`](99996-note-failed-to-load-dynamic-library.slang) |
| Fires diagnostic W29106 (spirv-instruction-with-too-many-operands) - too many operands | negative | source/slang/slang-diagnostics.lua | [`29106-spirv-instruction-with-too-many-operands.slang`](29106-spirv-instruction-with-too-many-operands.slang) |
| Fires diagnostic W30058 (dangling-equality-expr) - result of '==' not used | negative | source/slang/slang-diagnostics.lua | [`30058-dangling-equality-expr.slang`](30058-dangling-equality-expr.slang) |
| Fires diagnostic W30082 (implicit-conversion-to-double) - implicit float-to-double conversion | negative | source/slang/slang-diagnostics.lua | [`30082-implicit-conversion-to-double.slang`](30082-implicit-conversion-to-double.slang) |
| Fires diagnostic W31231 (deprecated-modifier-usage) - use of deprecated modifier | negative | source/slang/slang-diagnostics.lua | [`31231-deprecated-modifier-usage.slang`](31231-deprecated-modifier-usage.slang) |
| Fires diagnostic W32006 (enum-case-implicit-tag-value-overflow) - implicit enum case value overflows underlying tag type | negative | source/slang/slang-diagnostics.lua | [`32006-enum-case-implicit-tag-value-overflow.slang`](32006-enum-case-implicit-tag-value-overflow.slang) |
| Fires diagnostic W36112 (entry-point-and-profile-are-incompatible) - entry point incompatible with profile | negative | source/slang/slang-diagnostics.lua | [`36112-entry-point-and-profile-are-incompatible.slang`](36112-entry-point-and-profile-are-incompatible.slang) |
| Fires diagnostic W36113 (using-internal-capability-name) - using internal capability name | negative | source/slang/slang-diagnostics.lua | [`36113-using-internal-capability-name.slang`](36113-using-internal-capability-name.slang) |
| Fires diagnostic W38006 (specified-stage-doesnt-match-attribute) - entry point stage mismatch | negative | source/slang/slang-diagnostics.lua | [`38006-specified-stage-doesnt-match-attribute.slang`](38006-specified-stage-doesnt-match-attribute.slang) |
| Fires diagnostic W38010 (unhandled-mod-on-entry-point-parameter) - modifier on entry point parameter is unsupported | negative | source/slang/slang-diagnostics.lua | [`38010-unhandled-mod-on-entry-point-parameter.slang`](38010-unhandled-mod-on-entry-point-parameter.slang) |
| Fires diagnostic W38040 (non-uniform-entry-point-parameter-treated-as-uniform) - entry point parameter treated as uniform | negative | source/slang/slang-diagnostics.lua | [`38040-non-uniform-entry-point-parameter-treated-as-uniform.slang`](38040-non-uniform-entry-point-parameter-treated-as-uniform.slang) |
| Fires diagnostic W38052 (vertex-shader-missing-sv-position) - vertex shader has no output with the 'SV_Position' system value semantic | negative | source/slang/slang-diagnostics.lua | [`38052-vertex-shader-missing-sv-position.slang`](38052-vertex-shader-missing-sv-position.slang) |
| Fires diagnostic W38109 (non-copyable-type-cannot-conform-to-interface) - non-copyable interface conformance is not fully supported | negative | source/slang/slang-diagnostics.lua | [`38109-non-copyable-type-cannot-conform-to-interface.slang`](38109-non-copyable-type-cannot-conform-to-interface.slang) |
| Fires diagnostic W39001 (parameter-bindings-overlap) - explicit binding overlap | negative | source/slang/slang-diagnostics.lua | [`39001-parameter-bindings-overlap.slang`](39001-parameter-bindings-overlap.slang) |
| Fires diagnostic W39013 (register-modifier-but-no-vulkan-layout) - D3D register without Vulkan binding | negative | source/slang/slang-diagnostics.lua | [`39013-register-modifier-but-no-vulkan-layout.slang`](39013-register-modifier-but-no-vulkan-layout.slang) |
| Fires diagnostic W39019 (global-uniform-not-expected) - implicit global shader parameter | negative | source/slang/slang-diagnostics.lua | [`39019-global-uniform-not-expected.slang`](39019-global-uniform-not-expected.slang) |
| Fires diagnostic W39022 (vk-index-without-vk-location) - vk::index without vk::location | negative | source/slang/slang-diagnostics.lua | [`39022-vk-index-without-vk-location.slang`](39022-vk-index-without-vk-location.slang) |
| Fires diagnostic W39029 (register-modifier-but-no-vk-binding-nor-shift) - D3D register without Vulkan binding or shift | negative | source/slang/slang-diagnostics.lua | [`39029-register-modifier-but-no-vk-binding-nor-shift.slang`](39029-register-modifier-but-no-vk-binding-nor-shift.slang) |
| Fires diagnostic W39071 (binding-attribute-ignored-on-uniform) - binding attribute ignored | negative | source/slang/slang-diagnostics.lua | [`39071-binding-attribute-ignored-on-uniform.slang`](39071-binding-attribute-ignored-on-uniform.slang) |
| Fires diagnostic W40004 (integer-literal-too-large) - integer literal too large for signed | negative | source/slang/slang-diagnostics.lua | [`40004-integer-literal-too-large.slang`](40004-integer-literal-too-large.slang) |
| Fires diagnostic W40005 (integer-literal-truncated) - integer literal truncated | negative | source/slang/slang-diagnostics.lua | [`40005-integer-literal-truncated.slang`](40005-integer-literal-truncated.slang) |
| Fires diagnostic W40009 (float-literal-unrepresentable) - floating-point literal unrepresentable | negative | source/slang/slang-diagnostics.lua | [`40009-float-literal-unrepresentable.slang`](40009-float-literal-unrepresentable.slang) |
| Fires diagnostic W40010 (float-literal-too-small) - floating-point literal too small | negative | source/slang/slang-diagnostics.lua | [`40010-float-literal-too-small.slang`](40010-float-literal-too-small.slang) |
| Placeholder file - code 30025 is not in bucket 1 (asserts a benign program does not spuriously emit E30025) | negative | source/slang/slang-diagnostics.lua | [`30025-not-applicable.slang`](30025-not-applicable.slang) |


## Untested claims
NA


## Doc gaps observed
NA


## Catalog coverage
| Bucket | Codes in bucket | Tests added | Codes dropped |
| ------ | --------------- | ----------- | ------------- |
| 0      | 123             | 39          | 84            |
| 3      | 123             | 105         | 18            |


## Codes dropped (could not reach from minimum input)
| Code | Name | Reason |
| ---- | ---- | ------ |
| E2 | cannot-find-file | Driver-only diagnostic (file-system search across include paths); not emitted from .slang content. |
| E3 | token-type-expected-but-eof | Lexer EOF-token diagnostic; superseded by parser E20001 in every observed trigger. |
| E4 | cannot-write-output-file | Driver-only diagnostic (output-file write failure); requires controlled file-system state. |
| E5 | failed-to-load-dynamic-library | Driver-only diagnostic (dynamic library load); not emitted from .slang content. |
| E6 | too-many-output-paths-specified | CLI option diagnostic; not emitted from .slang content. |
| E12 | cannot-deduce-source-language | CLI option diagnostic; not emitted from .slang content. |
| E15 | unknown-stage | CLI option diagnostic (`-stage`); not emitted from .slang content. |
| E16 | unknown-pass-through-target | CLI option diagnostic (`-pass-through`); not emitted from .slang content. |
| E17 | unknown-command-line-option | CLI option diagnostic; not emitted from .slang content. |
| E18 | separate-debug-info-unsupported-for-target | CLI option diagnostic (`-separate-debug-info`); not emitted from .slang content. |
| E19 | unknown-source-language | CLI option diagnostic (`-lang`); not emitted from .slang content. |
| E20 | entry-points-need-to-be-associated-with-translation-units | CLI option diagnostic (`-entry`); not emitted from .slang content. |
| E22 | unknown-downstream-compiler | CLI option diagnostic (`-downstream`); not emitted from .slang content. |
| E28 | unable-to-generate-code-for-target | CLI option diagnostic (`-target`); not emitted from .slang content. |
| E30 | same-stage-specified-more-than-once | CLI option diagnostic (`-stage`); not emitted from .slang content. |
| E32 | explicit-stage-doesnt-match-implied-stage | CLI option diagnostic (`-stage`); not emitted from .slang content. |
| E33 | stage-specification-ignored-because-no-entry-points | CLI option diagnostic (`-stage`); not emitted from .slang content. |
| E34 | stage-specification-ignored-because-before-all-entry-points | CLI option diagnostic (`-stage`); not emitted from .slang content. |
| E35 | no-stage-specified-in-pass-through-mode | CLI option diagnostic (`-pass-through`); not emitted from .slang content. |
| E36 | expecting-an-integer | CLI option diagnostic; not emitted from .slang content. |
| E37 | expecting-a-unsigned-integer | CLI option diagnostic; not emitted from .slang content. |
| E40 | same-profile-specified-more-than-once | CLI option diagnostic (`-profile`); not emitted from .slang content. |
| E41 | conflicting-profiles-specified-for-target | CLI option diagnostic (`-profile`); not emitted from .slang content. |
| E42 | profile-specification-ignored-because-no-targets | CLI option diagnostic (`-profile`); not emitted from .slang content. |
| E43 | profile-specification-ignored-because-before-all-targets | CLI option diagnostic (`-profile`); not emitted from .slang content. |
| E44 | target-flags-ignored-because-no-targets | CLI option diagnostic (target flags); not emitted from .slang content. |
| E45 | target-flags-ignored-because-before-all-targets | CLI option diagnostic (target flags); not emitted from .slang content. |
| E50 | duplicate-targets | CLI option diagnostic (`-target`); not emitted from .slang content. |
| E51 | unhandled-language-for-source-embedding | Internal driver state (source-embedding); not emitted from .slang content. |
| E60 | cannot-deduce-output-format-from-path | CLI option diagnostic (`-o`); not emitted from .slang content. |
| E61 | cannot-match-output-file-to-target | CLI option diagnostic (`-o`); not emitted from .slang content. |
| E62 | unknown-command-line-value | CLI option diagnostic; not emitted from .slang content. |
| E63 | unknown-help-category | CLI option diagnostic (`-h`); not emitted from .slang content. |
| E70 | cannot-match-output-file-to-entry-point | CLI option diagnostic (`-o`); not emitted from .slang content. |
| E71 | invalid-type-conformance-option-string | CLI option diagnostic (`-type-conformance`); not emitted from .slang content. |
| E72 | invalid-type-conformance-option-no-type | CLI option diagnostic (`-type-conformance`); not emitted from .slang content. |
| E73 | cannot-create-type-conformance | CLI option diagnostic (`-type-conformance`); not emitted from .slang content. |
| E80 | duplicate-output-paths-for-entry-point-and-target | CLI option diagnostic (`-o`); not emitted from .slang content. |
| E81 | duplicate-output-paths-for-target | CLI option diagnostic (`-o`); not emitted from .slang content. |
| E82 | duplicate-dependency-output-paths | CLI option diagnostic (`-dep`); not emitted from .slang content. |
| E83 | unable-to-write-repro-file | CLI option diagnostic (`-repro`); not emitted from .slang content. |
| E86 | unable-to-create-module-container | Internal API diagnostic (module container); not emitted from .slang content. |
| E87 | unable-to-set-default-downstream-compiler | CLI/API diagnostic (`-default-downstream-compiler`); not emitted from .slang content. |
| E89 | expecting-slang-riff-container | Driver/API diagnostic (RIFF container); not emitted from .slang content. |
| E90 | incompatible-riff-semantic-version | Driver/API diagnostic (RIFF version); not emitted from .slang content. |
| E91 | riff-hash-mismatch | Driver/API diagnostic (RIFF hash); not emitted from .slang content. |
| E92 | unable-to-create-directory | Driver/API diagnostic (directory creation); not emitted from .slang content. |
| E93 | unable-to-extract-repro-to-directory | Driver/API diagnostic (repro extraction); not emitted from .slang content. |
| E94 | unable-to-read-riff | Driver/API diagnostic (RIFF read); not emitted from .slang content. |
| E95 | unknown-library-kind | Driver/API diagnostic (`-r` library kind); not emitted from .slang content. |
| E96 | kind-not-linkable | Driver/API diagnostic (library kind); not emitted from .slang content. |
| E97 | library-does-not-exist | CLI option diagnostic (library path); not emitted from .slang content. |
| E98 | cannot-access-as-blob | Internal API diagnostic (blob access); not emitted from .slang content. |
| E100 | failed-to-load-downstream-compiler | Driver-only diagnostic (downstream compiler load); not emitted from .slang content. |
| E101 | downstream-compiler-doesnt-support-whole-program-compilation | Driver-only diagnostic (whole-program); not emitted from .slang content. |
| E102 | downstream-compile-time | Driver-only timing note; not emitted from .slang content. |
| E103 | performance-benchmark-result | Driver-only benchmark note; not emitted from .slang content. |
| E104 | need-to-enable-experiment-feature | CLI option diagnostic (`-experimental-feature`); not emitted from .slang content. |
| E105 | null-component-type | API diagnostic (component types); not emitted from .slang content. |
| E10011 | unexpectedEndOfInput | Lexer EOF diagnostic; in practice the lexer falls back to E10000 or parser sees the EOF first. |
| E15209 | language-version-differs-from-including-module | Multi-file include diagnostic (cross-module language version); requires a second source file. |
| E15301 | import-failed | AST deserialization diagnostic (precompiled module); not reachable from a single .slang. |
| E15303 | cannot-resolve-imported-decl | Precompiled-module decl-resolution diagnostic; requires a second compiled module artifact. |
| E15304 | no-unique-identity | Internal preprocessor/file-system diagnostic (no unique identity); not reachable from a single .slang. |
| E15502 | error-parsing-to-macro-invocation-argument | Macro-argument inner parse error; observed compiler output instead surfaces E15500 (warning). |
| E15602 | pragma-once-ignored | Catalog entry has no current emission site in the compiler source (apparent dead diagnostic). |
| E15615 | pragma-warning-cannot-insert-here | Catalog entry has no current emission site in the compiler source (apparent dead diagnostic). |
| E15616 | pragma-warning-point-suppress | Catalog entry has no current emission site in the compiler source (apparent dead diagnostic). |
| E20000 | unexpectedCharacter | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20002 | newlineInLiteral | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20003 | endOfFileInComment | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20004 | expectingAHexDigit | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20005 | expectingADigit | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20006 | expectingValueName | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20007 | unexpectedTokenExpectedTokenType | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20008 | unexpectedToken | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20009 | unableToConvertField | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20010 | fieldNotFound | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20011 | fieldRequiredOnType | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20012 | tooManyElementsForArray | JSON-parser diagnostic; emitted by the JSON lexer, not the Slang source lexer. |
| E20013 | invalid-cuda-sm-version | CLI option diagnostic (`-profile sm_*`); not emitted from .slang content. |
| E20014 | type-name-expected-but-eof | Parser EOF diagnostic for type-name; in observed reproductions the parser emits E20001 first. |
| E20015 | unexpected-eof | Parser EOF diagnostic; in observed reproductions the parser emits E20001 first. |
| E20016 | missing-layout-binding-modifier | Catalog entry has no current emission site in the compiler source (apparent dead diagnostic). |
| E36102 | conflicting-capability-due-to-statement-enclosing-func | Internal capability-conflict path with no context decl; in observed reproductions the compiler emits E36101 (decl context) first. |
| E38005 | expected-type-for-specialization-arg | Requires API-driven specialization argument (`SpecializationArg`); not reachable from a single .slang via slangc CLI. |
| E38008 | specialization-parameter-of-name-not-specialized | A `type_param` without specialization crashes the compiler on the CLI path; do not synthesize. |
| E38009 | expected-value-of-type-for-specialization-arg | Requires API-driven specialization of a `GlobalGenericValueParamDecl`; not reachable from slangc CLI. |
| E38013 | specialization-parameter-not-specialized | Requires API-driven specialization; not reachable from a single .slang via slangc CLI. |
| E38021 | type-argument-for-generic-parameter-does-not-conform-to-interface | Fires only when `-specialize` provides a non-conforming type for a global `type_param`; not reachable from a self-contained .slang. |
| E38022 | cannot-specialize-global-generic-to-itself | Requires API-driven specialization of a global type_param to itself; not reachable from slangc CLI. |
| E38023 | cannot-specialize-global-generic-to-another-generic-param | Requires API-driven specialization across global type_params; not reachable from slangc CLI. |
| E38025 | mismatch-specialization-arguments | Requires API-driven specialization argument count mismatch; not reachable from slangc CLI. |
| E38028 | invalid-form-of-specialization-arg | Requires API-driven specialization with malformed argument value; not reachable from slangc CLI. |
| E38032 | use-of-no-diff-on-differentiable-func | Catalog entry has no current emission site in the compiler source (apparent dead diagnostic). |
| E38035 | encountered-non-differentiable-function-during-higher-order-diff | Requires `fwd_diff` of a function that internally calls another non-differentiable function during higher-order pass; minimum repro not found in 2 attempts. |
| E38200 | recursive-module-import | Requires two `.slang` source files that import each other; not reachable from a single-file repro. |
| E39000 | conflicting-explicit-bindings-for-parameter | Fires when the same parameter has two conflicting `register`/`vk::binding` specs; requires multi-file or multi-decl conflict beyond minimum repro. |
| E39012 | requested-bindless-space-index-unavailable | Requires `-bindless-space-index` CLI option combined with a space already taken; CLI option side-effect, not user .slang content. |
| E39025 | conflicting-vulkan-inferred-binding-for-parameter | Requires two parameters whose Vulkan binding inference happens to overlap; minimum repro not found in 2 attempts. |
| E39031 | class-type-not-supported | Triggering this with `class X { int a; } X x;` segfaults the compiler in this build; do not lock in buggy behavior. |
| E39998 | generic-evaluation-recursion-limit-exceeded | Requires generic evaluation depth above `kMaxTypeNestingDepth`; needs synthesized deep generic chain beyond minimum repro. |
