# Literal dash term -test ==> Program(Term) # Quoted dash term "-excluded" ==> Program(Term) # Dash in middle test-case ==> Program(Term) # Multiple dash terms -one -two -three ==> Program(AndExpr(Term,Term,Term)) # Negate file prefix -file:test.js ==> Program(NegateExpr(PrefixExpr(FileExpr))) # Negate repo prefix -repo:archived ==> Program(NegateExpr(PrefixExpr(RepoExpr))) # Negate lang prefix -lang:python ==> Program(NegateExpr(PrefixExpr(LangExpr))) # Negate content prefix -content:TODO ==> Program(NegateExpr(PrefixExpr(ContentExpr))) # Negate revision prefix -rev:develop ==> Program(NegateExpr(PrefixExpr(RevisionExpr))) # Negate archived prefix -archived:yes ==> Program(NegateExpr(PrefixExpr(ArchivedExpr))) # Negate fork prefix -fork:yes ==> Program(NegateExpr(PrefixExpr(ForkExpr))) # Negate visibility prefix -visibility:any ==> Program(NegateExpr(PrefixExpr(VisibilityExpr))) # Negate context prefix -context:backend ==> Program(NegateExpr(PrefixExpr(ContextExpr))) # Negate symbol prefix -sym:OldClass ==> Program(NegateExpr(PrefixExpr(SymExpr))) # Negate parentheses -(test) ==> Program(NegateExpr(ParenExpr(Term))) # Negate group with multiple terms -(test exclude) ==> Program(NegateExpr(ParenExpr(AndExpr(Term,Term)))) # Negate group with prefix -(file:test.js console.log) ==> Program(NegateExpr(ParenExpr(AndExpr(PrefixExpr(FileExpr),Term)))) # Prefix with negated term file:test.js -console ==> Program(AndExpr(PrefixExpr(FileExpr),Term)) # Multiple prefixes with negation file:test.js -lang:python ==> Program(AndExpr(PrefixExpr(FileExpr),NegateExpr(PrefixExpr(LangExpr)))) # Complex negation pattern function -file:test.js -lang:java ==> Program(AndExpr(Term,NegateExpr(PrefixExpr(FileExpr)),NegateExpr(PrefixExpr(LangExpr)))) # Negation inside parentheses (-file:test.js) ==> Program(ParenExpr(NegateExpr(PrefixExpr(FileExpr)))) # Multiple negations in group (-file:a.js -lang:python) ==> Program(ParenExpr(AndExpr(NegateExpr(PrefixExpr(FileExpr)),NegateExpr(PrefixExpr(LangExpr))))) # Mixed in parentheses (include -file:test.js) ==> Program(ParenExpr(AndExpr(Term,NegateExpr(PrefixExpr(FileExpr))))) # Negate nested group -((file:test.js)) ==> Program(NegateExpr(ParenExpr(ParenExpr(PrefixExpr(FileExpr))))) # Negate short form prefix -f:test.js ==> Program(NegateExpr(PrefixExpr(FileExpr))) # Negate short form repo -r:myrepo ==> Program(NegateExpr(PrefixExpr(RepoExpr))) # Negate short form content -c:console ==> Program(NegateExpr(PrefixExpr(ContentExpr))) # Negate with prefix in quotes -file:"test file.js" ==> Program(NegateExpr(PrefixExpr(FileExpr))) # Complex with multiple negated prefixes lang:typescript -file:*.test.ts -file:*.spec.ts ==> Program(AndExpr(PrefixExpr(LangExpr),NegateExpr(PrefixExpr(FileExpr)),NegateExpr(PrefixExpr(FileExpr)))) # Negated group with prefix -(file:test.js lang:python) ==> Program(NegateExpr(ParenExpr(AndExpr(PrefixExpr(FileExpr),PrefixExpr(LangExpr))))) # Negate empty group -() ==> Program(NegateExpr(ParenExpr(Term(⚠)))) # Negate with space after dash - file:test.js ==> Program(NegateExpr(PrefixExpr(FileExpr)))