File tree 2 files changed +25
-4
lines changed 2 files changed +25
-4
lines changed Original file line number Diff line number Diff line change @@ -613,17 +613,26 @@ ClassDef: ast::LocatedStatement = {
613
613
},
614
614
};
615
615
616
+ Path: ast::Expression = {
617
+ <n:Identifier> => ast::Expression::Identifier { name: n },
618
+ <p:Path> "." <n:name> => {
619
+ ast::Expression::Attribute {
620
+ value: Box::new(p),
621
+ name: n,
622
+ }
623
+ },
624
+ };
625
+
616
626
// Decorators:
617
627
Decorator: ast::Expression = {
618
- "@" <n:DottedName> <a: ("(" ArgumentList ")")?> "\n" => {
619
- let name = ast::Expression::Identifier { name: n };
628
+ "@" <p:Path> <a: ("(" ArgumentList ")")?> "\n" => {
620
629
match a {
621
630
Some((_, args, _)) => ast::Expression::Call {
622
- function: Box::new(name ),
631
+ function: Box::new(p ),
623
632
args: args.0,
624
633
keywords: args.1,
625
634
},
626
- None => name ,
635
+ None => p ,
627
636
}
628
637
},
629
638
};
Original file line number Diff line number Diff line change @@ -14,3 +14,15 @@ def add(a, b):
14
14
15
15
assert c == 14
16
16
17
+
18
+ def f (func ): return lambda : 42
19
+ class A : pass
20
+ a = A ()
21
+ a .a = A ()
22
+ a .a .x = f
23
+
24
+ @a .a .x
25
+ def func ():
26
+ pass
27
+
28
+ assert func () == 42
You can’t perform that action at this time.
0 commit comments