diff options
author | Martin Odersky <odersky@gmail.com> | 2013-10-07 09:22:59 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-10-07 10:01:07 +0200 |
commit | 16c1ddd3bb86c61890418b8394d44486e7bbd9dd (patch) | |
tree | 0ae37c424eb5b1860b3f8662119d380cb5c3d3d4 /src | |
parent | 9a28428f48e9a8ef8e4ef8f35260a10842736624 (diff) | |
download | dotty-16c1ddd3bb86c61890418b8394d44486e7bbd9dd.tar.gz dotty-16c1ddd3bb86c61890418b8394d44486e7bbd9dd.tar.bz2 dotty-16c1ddd3bb86c61890418b8394d44486e7bbd9dd.zip |
flags for instances
and changes flags for type params
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/core/Flags.scala | 22 | ||||
-rw-r--r-- | src/dotty/tools/dotc/typer/Implicits.scala | 2 |
2 files changed, 18 insertions, 6 deletions
diff --git a/src/dotty/tools/dotc/core/Flags.scala b/src/dotty/tools/dotc/core/Flags.scala index 0c433ecc5..17ff18b73 100644 --- a/src/dotty/tools/dotc/core/Flags.scala +++ b/src/dotty/tools/dotc/core/Flags.scala @@ -294,6 +294,11 @@ object Flags { /** A case parameter (or its accessor, or a GADT skolem) */ final val CaseAccessor = termFlag(26, "<caseaccessor>") + /** An type parameter which is an alias for some other type parameter */ + final val TypeParamInstance = typeFlag(26, "<type-param-inst>") + + final val CaseAccessorOrTypeParamInstance = CaseAccessor.toCommonFlags + /** A super accessor */ final val SuperAccessor = termFlag(27, "<superaccessor>") @@ -388,8 +393,8 @@ object Flags { /** Flags guaranteed to be set upon symbol creation */ final val FromStartFlags = AccessFlags | Module | Package | Deferred | Param | Scala2ExistentialCommon | Touched | - Static | CovariantCommon | ContravariantCommon | ExpandedName | AccessorOrSealed | Frozen | - Erroneous | ImplicitCommon | Permanent + Static | CovariantCommon | ContravariantCommon | ExpandedName | AccessorOrSealed | + CaseAccessorOrTypeParamInstance | Frozen | Erroneous | ImplicitCommon | Permanent assert(FromStartFlags.isTermFlags && FromStartFlags.isTypeFlags) // TODO: Should check that FromStartFlags do not change in completion @@ -402,7 +407,7 @@ object Flags { /** Flags that are passed from a type parameter of a class to a refinement symbol * that sets the type parameter */ - final val RetainedTypeArgFlags = VarianceFlags | Protected | Local + final val RetainedTypeArgFlags = VarianceFlags | ExpandedName | Protected | Local /** Modules always have these flags set */ final val ModuleCreationFlags = ModuleVal @@ -414,7 +419,7 @@ object Flags { final val SelfSymFlags = Private | Local | Deferred /** The flags of a type parameter */ - final val TypeParamCreationFlags = TypeParam | Protected | Local + final val TypeParamCreationFlags = TypeParam | Deferred | Protected | Local /** Flags that can apply to both a module val and a module class, except those that * are added at creation anyway @@ -452,6 +457,15 @@ object Flags { /** A parameter or parameter accessor */ final val ParamOrAccessor = Param | Accessor + /** A covariant type parameter instance */ + final val CovariantExpanded = allOf(ExpandedName, Covariant) + + /** A contravariant type parameter instance */ + final val ContravariantExpanded = allOf(ExpandedName, Contravariant) + + /** A covariant type parameter instance */ + final val TypeParamOrInstance = TypeParam | TypeParamInstance + /** Has defined or inherited default parameters */ final val HasDefaultParams = DefaultParameterized | InheritedDefaultParams diff --git a/src/dotty/tools/dotc/typer/Implicits.scala b/src/dotty/tools/dotc/typer/Implicits.scala index 98163a7f5..af36962a5 100644 --- a/src/dotty/tools/dotc/typer/Implicits.scala +++ b/src/dotty/tools/dotc/typer/Implicits.scala @@ -275,8 +275,6 @@ trait Implicits { self: Typer => /** Search a list of eligible implicit references */ def searchImplicits(eligible: List[TermRef], contextual: Boolean): SearchResult = { - ctx.typerState.checkConsistent // !!! DEBUG - /** Try to typecheck an implicit reference */ def typedImplicit(ref: TermRef)(implicit ctx: Context): SearchResult = track("typedImplicit") { ctx.typerState.checkConsistent // !!! DEBUG |