{"record":{"id":"23b4c8261059e363","repo":"plandex-ai/plandex","slug":"unsupported-file-type-s","errorCode":null,"errorMessage":"unsupported file type: %s","messagePattern":"unsupported file type: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/server/syntax/file_map/multi.go","lineNumber":95,"sourceCode":"type MapTrees map[string]string\n\nfunc ProcessMapTrees(ctx context.Context, inputs map[string]string) (MapTrees, error) {\n\ttrees := make(MapTrees, len(inputs))\n\tvar mu sync.Mutex\n\terrCh := make(chan error, len(inputs))\n\n\tfor path, content := range inputs {\n\t\tgo func(path, content string) {\n\t\t\t// Get appropriate parser\n\t\t\tvar parser *tree_sitter.Parser\n\t\t\tfile := filepath.Base(path)\n\t\t\tif strings.Contains(strings.ToLower(file), \"dockerfile\") {\n\t\t\t\tparser = syntax.GetParserForLanguage(shared.LanguageDockerfile)\n\t\t\t} else {\n\t\t\t\tparser, _, _, _ = syntax.GetParserForPath(path)\n\n\t\t\t\tif parser == nil {\n\t\t\t\t\terrCh <- fmt.Errorf(\"unsupported file type: %s\", path)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontentBytes := []byte(content)\n\n\t\t\t// Parse file\n\t\t\ttree, err := parser.ParseCtx(ctx, nil, contentBytes)\n\t\t\tif err != nil {\n\t\t\t\terrCh <- fmt.Errorf(\"failed to parse file: %v\", err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer tree.Close()\n\n\t\t\tmu.Lock()\n\t\t\tdefer mu.Unlock()\n\t\t\ttrees[path] = string(tree.RootNode().String())\n\t\t\terrCh <- nil","sourceCodeStart":77,"sourceCodeEnd":113,"githubUrl":"https://github.com/plandex-ai/plandex/blob/e2d772072efadbe41d2946d97d79be55532dbab5/app/server/syntax/file_map/multi.go#L77-L113","documentation":"When building file maps for plain (non-Dockerfile) files, multi.go resolves a parser via syntax.GetParserForPath(path). If no parser is registered for the file's extension/language, the goroutine emits 'unsupported file type: %s'. The library cannot structurally map file types it has no grammar for.","triggerScenarios":"Including a file whose extension has no registered tree-sitter parser (and whose name doesn't contain 'dockerfile') in the multi-file mapping input.","commonSituations":"Mapping directories containing binaries, lock files, config formats (e.g. .yaml, .json, .toml depending on registered grammars), vendored assets, or files with unusual/no extensions.","solutions":["Filter the input list to extensions with registered parsers before mapping","Handle Dockerfile-style detection for naming variants if intended","Register/add a parser for the language if support is required","Skip and log unsupported files instead of failing the whole batch"],"exampleFix":"// before\npaths, _ := allFilesUnder(root)\nMultiMapFile(ctx, paths)\n// after\nvar supported []string\nfor _, p := range paths {\n    if parser, _, _, _ := syntax.GetParserForPath(p); parser != nil {\n        supported = append(supported, p)\n    }\n}\nMultiMapFile(ctx, supported)","handlingStrategy":"validation","validationCode":"if !strings.Contains(strings.ToLower(path), \"dockerfile\") {\n    if parser, _, _, _ := syntax.GetParserForPath(path); parser == nil {\n        return fmt.Errorf(\"skip unsupported: %s\", path)\n    }\n}","typeGuard":"func supportedForMapping(path string) bool {\n    if strings.Contains(strings.ToLower(path), \"dockerfile\") { return true }\n    p, _, _, _ := syntax.GetParserForPath(path)\n    return p != nil\n}","tryCatchPattern":"err := <-errCh\nif err != nil && strings.HasPrefix(err.Error(), \"unsupported file type:\") {\n    log.Printf(\"ignoring unsupported file: %v\", err)\n}","preventionTips":["Whitelist extensions before batch mapping","Check for Dockerfile naming variants explicitly","Register parsers for languages you need to map","Log and skip rather than abort on unsupported types"],"tags":["unsupported-file-type","tree-sitter","parser","file-mapping"],"backgroundTag":"unsupported-file-type","analyzedSha":"e2d772072efadbe41d2946d97d79be55532dbab5","analyzedAt":"2026-09-05T20:56:53.631Z","contentChangedAt":"2026-09-05T20:56:53.631Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}