Skip to content

Commit e475f4f

Browse files
committed
Check that methods are in fact parameterless
1 parent 2a739e1 commit e475f4f

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

compiler/src/dotty/tools/dotc/ast/tpd.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,8 +1039,10 @@ object tpd extends Trees.Instance[Type] with TypedTreeInfo {
10391039
protected def skipLocal(sym: Symbol): Boolean = true
10401040

10411041
/** Is this a symbol that of a local val or parameterless def for which we could get the rhs */
1042-
private def isBinding(sym: Symbol)(implicit ctx: Context): Boolean =
1043-
sym.exists && !sym.is(Param) && !sym.owner.isClass && !sym.isAnonymousFunction
1042+
private def isBinding(sym: Symbol)(implicit ctx: Context): Boolean = {
1043+
sym.exists && !sym.is(Param) && !sym.owner.isClass &&
1044+
!(sym.is(Method) && sym.info.isInstanceOf[MethodOrPoly]) // if is a method it is parameterless
1045+
}
10441046
}
10451047

10461048
implicit class ListOfTreeDecorator(val xs: List[tpd.Tree]) extends AnyVal {

tests/run/tasty-argument-tree-1.check

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@ tree deref. vals: Term.Ident("a")
1717
tree: Term.Inlined(None, Nil, Term.Ident("x"))
1818
tree deref. vals: Term.Ident("b")
1919

20+
tree: Term.Inlined(None, Nil, Term.Ident("x"))
21+
tree deref. vals: Term.Apply(Term.Ident("d2"), Nil)
22+
23+
tree: Term.Inlined(None, Nil, Term.Ident("x"))
24+
tree deref. vals: Term.Apply(Term.Ident("d3"), List(Term.Literal(Constant.Int(3))))
25+
26+
tree: Term.Inlined(None, Nil, Term.Ident("x"))
27+
tree deref. vals: Term.TypeApply(Term.Ident("d4"), List(TypeTree.Ident("Int")))
28+
2029
tree: Term.Inlined(None, Nil, Term.Ident("vv"))
2130
tree deref. vals: Term.Literal(Constant.Int(1))
2231

tests/run/tasty-argument-tree-1/quoted_2.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,18 @@ object Test {
99
val v: Int = 1
1010
def d: Int = 2
1111
lazy val l: Int = 3
12+
def d2(): Int = 2
13+
def d3(a: Int): Int = a
14+
def d4[T]: Int = 2
1215
inspect(3)
1316
inspect(v)
1417
inspect(d)
1518
inspect(l)
1619
inspect(a)
1720
inspect(b)
21+
inspect(d2())
22+
inspect(d3(3))
23+
inspect(d4[Int])
1824

1925
val vv = v
2026
def dv = v

0 commit comments

Comments
 (0)