summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/Definitions.scala
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2014-01-12 12:01:12 +0100
committerEugene Burmako <xeno.by@gmail.com>2014-01-12 18:03:51 +0100
commite36888c3d953048483ccea9a95d5984b54ad6ebc (patch)
treea6ba3268a238acb5310dcfdefcf8234c0b7f6a77 /src/reflect/scala/reflect/internal/Definitions.scala
parent3a689f5c426436aea716567625fd6167e57bef92 (diff)
downloadscala-e36888c3d953048483ccea9a95d5984b54ad6ebc.tar.gz
scala-e36888c3d953048483ccea9a95d5984b54ad6ebc.tar.bz2
scala-e36888c3d953048483ccea9a95d5984b54ad6ebc.zip
prohibits constructor overloading for macro bundles
As per Jason’s feedback, this commit handles overloaded constructors in macro bundles. The backend now checks that we have a constructor of a correct type. The frontend now prohibits multiple constructors altogether.
Diffstat (limited to 'src/reflect/scala/reflect/internal/Definitions.scala')
-rw-r--r--src/reflect/scala/reflect/internal/Definitions.scala3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/Definitions.scala b/src/reflect/scala/reflect/internal/Definitions.scala
index 03826a3011..29a8e62b6e 100644
--- a/src/reflect/scala/reflect/internal/Definitions.scala
+++ b/src/reflect/scala/reflect/internal/Definitions.scala
@@ -616,8 +616,9 @@ trait Definitions extends api.StandardDefinitions {
def isMacroBundleType(tp: Type) = {
val isContextCompatible = macroBundleParamInfo(tp) != NoType
+ val hasSingleConstructor = !tp.declaration(nme.CONSTRUCTOR).isOverloaded
val nonAbstract = !tp.erasure.typeSymbol.isAbstractClass
- isContextCompatible && nonAbstract
+ isContextCompatible && hasSingleConstructor && nonAbstract
}
def isBlackboxMacroBundleType(tp: Type) =