diff --git a/tests/cases/python-parser/04_all_syntax.py b/tests/cases/python-parser/04_all_syntax.py new file mode 100644 index 0000000..9bf70f5 --- /dev/null +++ b/tests/cases/python-parser/04_all_syntax.py @@ -0,0 +1,49 @@ +# type: ignore +# ruff: disable[F821] + +import module1 +import module2 as alias2 +from module3 import submodule3 +from module4 import submodule4 as alias4 + +a: int +b: Generic[int] +c: Generic2[int, float] +d: Frame[a:int, b:float] + +e = 3 +f: int = 4 +g = [] +h = [1, 0.1, " ", None, False, True] +i = {} +j = {"a": 1, "b": 2} +k = {"c": 3, **j} +l = cast(int, a) +m = unsafe_cast(int, a) + + +def n(a: int, /, b: float, *, c: str) -> Any: + return + + +def o(a: int = 1, /, b: float = 2.0, *, c: str = "") -> Any: + return 1 + + +for i in h: + pass + +if e == f: + pass +elif f == g: + pass +else: + pass + +p = +a + -b - ~c * d / e**f +q = not (a and b) or c +r = a & b | c ^ d + +s = a.b.c +t = a[b][c, d][e:f] +u = a(b)(c=d) diff --git a/tests/cases/python-parser/04_all_syntax.py.ref.json b/tests/cases/python-parser/04_all_syntax.py.ref.json new file mode 100644 index 0000000..b04b839 --- /dev/null +++ b/tests/cases/python-parser/04_all_syntax.py.ref.json @@ -0,0 +1,725 @@ +{ + "stmts": [ + { + "_type": "ImportStmt", + "imports": [ + { + "_type": "ImportAlias", + "name": "module1", + "alias": null + } + ] + }, + { + "_type": "ImportStmt", + "imports": [ + { + "_type": "ImportAlias", + "name": "module2", + "alias": "alias2" + } + ] + }, + { + "_type": "FromImportStmt", + "module": "module3", + "imports": [ + { + "_type": "ImportAlias", + "name": "submodule3", + "alias": null + } + ], + "level": 0 + }, + { + "_type": "FromImportStmt", + "module": "module4", + "imports": [ + { + "_type": "ImportAlias", + "name": "submodule4", + "alias": "alias4" + } + ], + "level": 0 + }, + { + "_type": "TypeAssign", + "name": "a", + "type": { + "_type": "BaseType", + "base": "int", + "args": [] + } + }, + { + "_type": "TypeAssign", + "name": "b", + "type": { + "_type": "BaseType", + "base": "Generic", + "args": [ + { + "_type": "BaseType", + "base": "int", + "args": [] + } + ] + } + }, + { + "_type": "TypeAssign", + "name": "c", + "type": { + "_type": "BaseType", + "base": "Generic2", + "args": [ + { + "_type": "BaseType", + "base": "int", + "args": [] + }, + { + "_type": "BaseType", + "base": "float", + "args": [] + } + ] + } + }, + { + "_type": "TypeAssign", + "name": "d", + "type": { + "_type": "FrameType", + "columns": [ + { + "_type": "FrameColumn", + "name": "a", + "type": { + "_type": "BaseType", + "base": "int", + "args": [] + } + }, + { + "_type": "FrameColumn", + "name": "b", + "type": { + "_type": "BaseType", + "base": "float", + "args": [] + } + } + ] + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "e" + } + ], + "value": { + "_type": "LiteralExpr", + "value": 3 + } + }, + { + "_type": "TypeAssign", + "name": "f", + "type": { + "_type": "BaseType", + "base": "int", + "args": [] + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "f" + } + ], + "value": { + "_type": "LiteralExpr", + "value": 4 + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "g" + } + ], + "value": { + "_type": "ListExpr", + "items": [] + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "h" + } + ], + "value": { + "_type": "ListExpr", + "items": [ + { + "_type": "LiteralExpr", + "value": 1 + }, + { + "_type": "LiteralExpr", + "value": 0.1 + }, + { + "_type": "LiteralExpr", + "value": " " + }, + { + "_type": "LiteralExpr", + "value": null + }, + { + "_type": "LiteralExpr", + "value": false + }, + { + "_type": "LiteralExpr", + "value": true + } + ] + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "i" + } + ], + "value": { + "_type": "DictExpr", + "keys": [], + "values": [] + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "j" + } + ], + "value": { + "_type": "DictExpr", + "keys": [ + { + "_type": "LiteralExpr", + "value": "a" + }, + { + "_type": "LiteralExpr", + "value": "b" + } + ], + "values": [ + { + "_type": "LiteralExpr", + "value": 1 + }, + { + "_type": "LiteralExpr", + "value": 2 + } + ] + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "k" + } + ], + "value": { + "_type": "DictExpr", + "keys": [ + { + "_type": "LiteralExpr", + "value": "c" + }, + null + ], + "values": [ + { + "_type": "LiteralExpr", + "value": 3 + }, + { + "_type": "VariableExpr", + "name": "j" + } + ] + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "l" + } + ], + "value": { + "_type": "CastExpr", + "type": { + "_type": "BaseType", + "base": "int", + "args": [] + }, + "expr": { + "_type": "VariableExpr", + "name": "a" + }, + "unsafe": false + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "m" + } + ], + "value": { + "_type": "CastExpr", + "type": { + "_type": "BaseType", + "base": "int", + "args": [] + }, + "expr": { + "_type": "VariableExpr", + "name": "a" + }, + "unsafe": true + } + }, + { + "_type": "Function", + "name": "n", + "params": { + "_type": "ParamSpec", + "pos": [ + { + "name": "a", + "type": { + "_type": "BaseType", + "base": "int", + "args": [] + }, + "default": null + } + ], + "mixed": [ + { + "name": "b", + "type": { + "_type": "BaseType", + "base": "float", + "args": [] + }, + "default": null + } + ], + "kw": [ + { + "name": "c", + "type": { + "_type": "BaseType", + "base": "str", + "args": [] + }, + "default": null + } + ] + }, + "returns": { + "_type": "BaseType", + "base": "Any", + "args": [] + }, + "body": [ + { + "_type": "ReturnStmt", + "value": null + } + ] + }, + { + "_type": "Function", + "name": "o", + "params": { + "_type": "ParamSpec", + "pos": [ + { + "name": "a", + "type": { + "_type": "BaseType", + "base": "int", + "args": [] + }, + "default": { + "_type": "LiteralExpr", + "value": 1 + } + } + ], + "mixed": [ + { + "name": "b", + "type": { + "_type": "BaseType", + "base": "float", + "args": [] + }, + "default": { + "_type": "LiteralExpr", + "value": 2.0 + } + } + ], + "kw": [ + { + "name": "c", + "type": { + "_type": "BaseType", + "base": "str", + "args": [] + }, + "default": { + "_type": "LiteralExpr", + "value": "" + } + } + ] + }, + "returns": { + "_type": "BaseType", + "base": "Any", + "args": [] + }, + "body": [ + { + "_type": "ReturnStmt", + "value": { + "_type": "LiteralExpr", + "value": 1 + } + } + ] + }, + { + "_type": "ForStmt", + "target": { + "_type": "VariableExpr", + "name": "i" + }, + "iterator": { + "_type": "VariableExpr", + "name": "h" + }, + "body": [] + }, + { + "_type": "IfStmt", + "test": { + "_type": "CompareExpr", + "left": { + "_type": "VariableExpr", + "name": "e" + }, + "operator": "==", + "right": { + "_type": "VariableExpr", + "name": "f" + } + }, + "body": [], + "orelse": [ + { + "_type": "IfStmt", + "test": { + "_type": "CompareExpr", + "left": { + "_type": "VariableExpr", + "name": "f" + }, + "operator": "==", + "right": { + "_type": "VariableExpr", + "name": "g" + } + }, + "body": [], + "orelse": [] + } + ] + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "p" + } + ], + "value": { + "_type": "BinaryExpr", + "left": { + "_type": "BinaryExpr", + "left": { + "_type": "UnaryExpr", + "operator": "+", + "right": { + "_type": "VariableExpr", + "name": "a" + } + }, + "operator": "+", + "right": { + "_type": "UnaryExpr", + "operator": "-", + "right": { + "_type": "VariableExpr", + "name": "b" + } + } + }, + "operator": "-", + "right": { + "_type": "BinaryExpr", + "left": { + "_type": "BinaryExpr", + "left": { + "_type": "UnaryExpr", + "operator": "~", + "right": { + "_type": "VariableExpr", + "name": "c" + } + }, + "operator": "*", + "right": { + "_type": "VariableExpr", + "name": "d" + } + }, + "operator": "/", + "right": { + "_type": "BinaryExpr", + "left": { + "_type": "VariableExpr", + "name": "e" + }, + "operator": "**", + "right": { + "_type": "VariableExpr", + "name": "f" + } + } + } + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "q" + } + ], + "value": { + "_type": "LogicalExpr", + "left": { + "_type": "UnaryExpr", + "operator": "not", + "right": { + "_type": "LogicalExpr", + "left": { + "_type": "VariableExpr", + "name": "a" + }, + "operator": "and", + "right": { + "_type": "VariableExpr", + "name": "b" + } + } + }, + "operator": "or", + "right": { + "_type": "VariableExpr", + "name": "c" + } + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "r" + } + ], + "value": { + "_type": "BinaryExpr", + "left": { + "_type": "BinaryExpr", + "left": { + "_type": "VariableExpr", + "name": "a" + }, + "operator": "&", + "right": { + "_type": "VariableExpr", + "name": "b" + } + }, + "operator": "|", + "right": { + "_type": "BinaryExpr", + "left": { + "_type": "VariableExpr", + "name": "c" + }, + "operator": "^", + "right": { + "_type": "VariableExpr", + "name": "d" + } + } + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "s" + } + ], + "value": { + "_type": "GetExpr", + "object": { + "_type": "GetExpr", + "object": { + "_type": "VariableExpr", + "name": "a" + }, + "name": "b" + }, + "name": "c" + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "t" + } + ], + "value": { + "_type": "SubscriptExpr", + "object": { + "_type": "SubscriptExpr", + "object": { + "_type": "SubscriptExpr", + "object": { + "_type": "VariableExpr", + "name": "a" + }, + "index": { + "_type": "VariableExpr", + "name": "b" + } + }, + "index": { + "_type": "TupleExpr", + "items": [ + { + "_type": "VariableExpr", + "name": "c" + }, + { + "_type": "VariableExpr", + "name": "d" + } + ] + } + }, + "index": { + "_type": "SliceExpr", + "lower": { + "_type": "VariableExpr", + "name": "e" + }, + "upper": { + "_type": "VariableExpr", + "name": "f" + }, + "step": null + } + } + }, + { + "_type": "AssignStmt", + "targets": [ + { + "_type": "VariableExpr", + "name": "u" + } + ], + "value": { + "_type": "CallExpr", + "callee": { + "_type": "CallExpr", + "callee": { + "_type": "VariableExpr", + "name": "a" + }, + "arguments": [ + { + "_type": "VariableExpr", + "name": "b" + } + ], + "keywords": {} + }, + "arguments": [], + "keywords": { + "c": { + "_type": "VariableExpr", + "name": "d" + } + } + } + } + ] +} \ No newline at end of file