@@ -202,6 +202,14 @@ private def expr' (e' : Python.Expr') : Simplify Expr' :=
202202 | .boolOp op l => return (<- booleanOp op (<- exprs l)).expr
203203 | .binOp op l r => return .binOp (<- binOp op) (<- expr l) (<- expr r)
204204 | .unaryOp op e => return (<- unaryOp op) (<- expr e)
205+ | .compare a [.is] [⟨.const .none, pos⟩] =>
206+ return .binOp .eq (<- expr a) ⟨ .value .none, pos ⟩
207+ | .compare a [.isNot] [⟨.const .none, pos⟩] =>
208+ return .binOp .ne (<- expr a) ⟨ .value .none, pos ⟩
209+ | .compare a [.isIn] [b] =>
210+ return .call ⟨ .var `builtin.op.in, a.pos ⟩ [<- expr a, <- expr b] []
211+ | .compare a [.notIn] [b] =>
212+ return .call ⟨ .var `builtin.op.notin, a.pos ⟩ [<- expr a, <- expr b] []
205213 | .compare a ops l => do
206214 let a <- expr a
207215 let ops <- ops.mapM cmpOp
@@ -396,10 +404,10 @@ private def params (args : Python.Args) : Simplify (List Param) := do
396404 throw "varargs are not supported in NKI"
397405 if args.kwarg.isSome then
398406 warn "variable keyword arguments are not supported in NKI"
399- if args.posonlyargs.length > 0 then
400- warn "position-only arguments are not supported in NKI"
401- if args.kwonlyargs.length > 0 then
402- warn "keyword-only arguments are not supported in NKI"
407+ -- if args.posonlyargs.length > 0 then
408+ -- warn "position-only arguments are not supported in NKI"
409+ -- if args.kwonlyargs.length > 0 then
410+ -- warn "keyword-only arguments are not supported in NKI"
403411 let defaults := args.all_defaults
404412 let mut params := []
405413 for name in args.names do
0 commit comments