{"record":{"id":"75d4f472ccc6b488","repo":"stride3d/stride","slug":"unsupported-geometry-stream-type-name","errorCode":null,"errorMessage":"Unsupported geometry stream type '{Name}'","messagePattern":"Unsupported geometry stream type '(.+?)'","errorType":"exception","errorClass":"NotSupportedException","httpStatus":null,"severity":"error","filePath":"sources/shaders/Stride.Shaders.Parsers/Parsing/SDSL/AST/Literals.cs","lineNumber":727,"sourceCode":"            var fullTypeName = GenerateTypeName(includeGenerics: true, includeArray: false);\n            if (table.DeclaredTypes.TryGetValue(fullTypeName, out symbolType))\n            {\n\n            }\n            else if (table.DeclaredShaders.TryGetValue(fullTypeName, out var shaderDef))\n            {\n                symbolType = new ShaderSymbol(shaderDef.Name, shaderDef.GenericArguments);\n                // Ensure the shader is imported in the current context so shaderImportIds has an entry\n                context.GetOrImportShader(shaderDef);\n            }\n            else if (Name == \"PointStream\" || Name == \"LineStream\" || Name == \"TriangleStream\")\n            {\n                symbolType = new GeometryStreamType(((TypeName)Generics[0]).ResolveType(table, context), Name switch\n                {\n                    \"PointStream\" => Specification.GeometryStreamOutputKindSDSL.Point,\n                    \"LineStream\" => Specification.GeometryStreamOutputKindSDSL.Line,\n                    \"TriangleStream\" => Specification.GeometryStreamOutputKindSDSL.Triangle,\n                    _ => throw new NotSupportedException($\"Unsupported geometry stream type '{Name}'\"),\n                });\n            }\n            else if (Name == \"InputPatch\" || Name == \"OutputPatch\")\n            {\n                symbolType = new PatchType(((TypeName)Generics[0]).ResolveType(table, context), Name switch\n                {\n                    \"InputPatch\" => Specification.PatchTypeKindSDSL.Input,\n                    \"OutputPatch\" => Specification.PatchTypeKindSDSL.Output,\n                    _ => throw new NotSupportedException($\"Unsupported patch type '{Name}'\"),\n                }, ((NumberLiteral)Generics[1]).IntValue);\n            }\n            else if (SymbolType.TryGetNumeric(Name, out var numeric))\n            {\n                table.DeclaredTypes.Add(fullTypeName, numeric);\n                symbolType = numeric;\n            }\n            else if (!IsArray && Generics.Count == 0 && SymbolType.TryGetBufferType(Name, null, out var bufferType))\n            {","sourceCodeStart":709,"sourceCodeEnd":745,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/shaders/Stride.Shaders.Parsers/Parsing/SDSL/AST/Literals.cs#L709-L745","documentation":"Thrown when resolving a generic type name that is known to be a geometry stream type (PointStream/LineStream/TriangleStream family) but whose Name matches none of the supported geometry stream output kinds. The switch maps the name to a GeometryStreamOutputKindSDSL value and has no default mapping for other names.","triggerScenarios":"Resolving a TypeName with geometry-stream semantics whose Name is not exactly PointStream, LineStream, or TriangleStream (e.g. custom or misspelled stream type names passed as Generics[0]-carrying generic types).","commonSituations":"Typos like PointsStream or TriangleStreams in shader source; shader dialects/HLSL extensions with extra stream types not supported by the SPIR-V backend; internal callers passing wrong names into type resolution.","solutions":["Correct the stream type name in the shader to PointStream, LineStream, or TriangleStream","Check the geometry shader stage usage — only those three output kinds are supported","If a new stream kind is genuinely needed, add a mapping to the switch and to GeometryStreamOutputKindSDSL"],"exampleFix":"// before\nGeometryStream<float4> vertMain(PointStream<float4> input)\n// after\nGeometryStream<float4> vertMain(TriangleStream<float4> input)","handlingStrategy":"validation","validationCode":"var valid = new[] { \"PointStream\", \"LineStream\", \"TriangleStream\" };\nif (!valid.Contains(typeName.Name))\n    throw new NotSupportedException($\"'{typeName.Name}' is not a supported geometry stream type\");","typeGuard":"bool IsGeometryStream(string name) => name is \"PointStream\" or \"LineStream\" or \"TriangleStream\";","tryCatchPattern":"try { ResolveType(table, context); }\ncatch (NotSupportedException ex) { table.AddError(new(info, ex.Message)); }","preventionTips":["Use only PointStream/LineStream/TriangleStream in geometry shaders","Lint shader sources for stream type names","Document supported geometry stream kinds"],"tags":["sdsl","geometry-shader","invalid-enum"],"backgroundTag":"unsupported-enum-value","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}