{"record":{"id":"8b3b08309b713ce7","repo":"apple/pkl","slug":"invalidglobunsupportedfeature","errorCode":"invalidGlobUnsupportedFeature","errorMessage":"invalidGlobUnsupportedFeature","messagePattern":"invalidGlobUnsupportedFeature","errorType":"error_code","errorClass":"InvalidGlobPatternException","httpStatus":null,"severity":"error","filePath":"pkl-core/src/main/java/org/pkl/core/util/GlobResolver.java","lineNumber":119,"sourceCode":"        sb.append(\"^\");\n        i++;\n      }\n      case ']' -> {\n        // the first `]` in a character class is verbatim and not treated as a closing delimiter.\n        sb.append(']');\n        i++;\n      }\n      case NULL ->\n          throw new InvalidGlobPatternException(\n              ErrorMessages.create(\"invalidGlobMissingCharacterClassTerminator\"));\n    }\n    i++;\n    var current = globPattern.charAt(i);\n    while (current != ']') {\n      if (current == '[') {\n        var next = getNextChar(globPattern, i);\n        if (next == ':' || next == '=' || next == '.') {\n          throw new InvalidGlobPatternException(\n              ErrorMessages.create(\"invalidGlobUnsupportedFeature\"));\n        }\n      }\n      if (current == '/') {\n        throw new InvalidGlobPatternException(\n            ErrorMessages.create(\"invalidGlobInvalidCharacterInCharacterClass\", current));\n      } else if (current == '\\\\') {\n        sb.append(\"\\\\\\\\\");\n      } else {\n        sb.append(current);\n      }\n      i++;\n      if (i == globPattern.length()) {\n        throw new InvalidGlobPatternException(\n            ErrorMessages.create(\"invalidGlobMissingCharacterClassTerminator\"));\n      }\n      current = globPattern.charAt(i);\n    }","sourceCodeStart":101,"sourceCodeEnd":137,"githubUrl":"https://github.com/apple/pkl/blob/f3efcbfc9b60d30053b0536d664948d7aa1b8673/pkl-core/src/main/java/org/pkl/core/util/GlobResolver.java#L101-L137","documentation":"Glob character classes do not support POSIX-style `[:...:]`, collating `[=...=]`, or class `[.Quickly.]` extensions. consumeCharacterClass throws this error when it sees `[` followed by `:`, `=`, or `.` inside a character class.","triggerScenarios":"Using POSIX character-class syntax like `[[:alpha:]]`, `[=e=]`, or `[.a.]` inside a glob passed to GlobResolver.toRegexString/toRegexPattern.","commonSituations":"Porting patterns from shell/POSIX fnmatch or find utilities that support these extensions; copying regex-flavored patterns into globs.","solutions":["Remove the POSIX-style class extension and enumerate the characters explicitly (e.g. `[a-zA-Z]` instead of `[[:alpha:]]`).","Replace with an equivalent alternation group `{a,b,c}` if supported.","Use a plain regex-based matcher if POSIX classes are essential."],"exampleFix":"// before\nglob = \"file[[:digit:]]*.txt\"\n// after\nglob = \"file[0123456789]*.txt\"","handlingStrategy":"validation","validationCode":"if (glob.matches(\".*\\\\[\\\\[:.*\\\\].*\")) throw new IllegalArgumentException(\"POSIX classes unsupported in glob: \" + glob);\n","typeGuard":null,"tryCatchPattern":"try { return GlobResolver.toRegexPattern(glob); } catch (InvalidGlobPatternException e) { throw new IllegalArgumentException(\"Unsupported glob feature in: \" + glob, e); }\n","preventionTips":["Enumerate characters explicitly instead of POSIX classes.","Don't paste regex/fnmatch-flavored patterns into globs.","Document supported glob syntax for users."],"tags":["pkl","glob","pattern","unsupported-feature"],"backgroundTag":"invalid-regex-pattern","analyzedSha":"f3efcbfc9b60d30053b0536d664948d7aa1b8673","analyzedAt":"2026-09-08T13:10:45.570Z","contentChangedAt":"2026-09-08T13:10:45.570Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}