summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-04-16 13:51:23 +0000
committerMartin Odersky <odersky@gmail.com>2003-04-16 13:51:23 +0000
commit17a647a7408200cc9e32c056307c895d56cff976 (patch)
tree5780dad75e69af32c42f02ebe48e4b137040fc1a /sources/scalac/symtab
parent4d51076c624e8b08c0053adfca5008063ec7e849 (diff)
downloadscala-17a647a7408200cc9e32c056307c895d56cff976.tar.gz
scala-17a647a7408200cc9e32c056307c895d56cff976.tar.bz2
scala-17a647a7408200cc9e32c056307c895d56cff976.zip
*** empty log message ***
Diffstat (limited to 'sources/scalac/symtab')
-rw-r--r--sources/scalac/symtab/Modifiers.java8
-rw-r--r--sources/scalac/symtab/Symbol.java3
-rw-r--r--sources/scalac/symtab/classfile/ClassfileParser.java2
3 files changed, 8 insertions, 5 deletions
diff --git a/sources/scalac/symtab/Modifiers.java b/sources/scalac/symtab/Modifiers.java
index 8d161ce117..a368b0b6ba 100644
--- a/sources/scalac/symtab/Modifiers.java
+++ b/sources/scalac/symtab/Modifiers.java
@@ -47,15 +47,17 @@ public interface Modifiers {
int ACCESSOR = 0x04000000; // function is an access function for a
// value or variable
- int BRIDGE = 0x0800000; // function is a bridge method.
+ int BRIDGE = 0x0800000; // function is a bridge method.
+ int SNDTIME = BRIDGE; // debug
int INTERFACE = 0x10000000; // symbol is a Java interface
int TRAIT = 0x20000000; // symbol is a Trait
- int SNDTIME = 0x40000000; //debug
+ int COVARIANT = 0x40000000; // symbol is a covariant type variable
+ int CONTRAVARIANT = 0x80000000; // symbol is a contravariant type variable
// masks
- int SOURCEFLAGS = 0x00000077 | DEF | REPEATED | MODUL | MUTABLE | PACKAGE | PARAM | TRAIT; // these modifiers can be set in source programs.
+ int SOURCEFLAGS = 0x00000077 | DEF | REPEATED | MODUL | MUTABLE | PACKAGE | PARAM | TRAIT | COVARIANT | CONTRAVARIANT; // these modifiers can be set in source programs.
int ACCESSFLAGS = PRIVATE | PROTECTED;
public static class Helper {
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java
index 546e2db3d4..75563a6ced 100644
--- a/sources/scalac/symtab/Symbol.java
+++ b/sources/scalac/symtab/Symbol.java
@@ -500,7 +500,8 @@ public abstract class Symbol implements Modifiers, Kinds {
flags = flags & ~LOCKED;
if (info instanceof SourceCompleter && (flags & SNDTIME) == 0) {
flags |= SNDTIME;
- return info();
+ Type tp = info();
+ flags &= ~SNDTIME;
} else {
assert !(rawInfoAt(id) instanceof Type.LazyType) : this;
flags |= INITIALIZED;
diff --git a/sources/scalac/symtab/classfile/ClassfileParser.java b/sources/scalac/symtab/classfile/ClassfileParser.java
index a0d69c4bed..097258c2b9 100644
--- a/sources/scalac/symtab/classfile/ClassfileParser.java
+++ b/sources/scalac/symtab/classfile/ClassfileParser.java
@@ -146,7 +146,7 @@ public class ClassfileParser implements ClassfileConstants {
if ((flags & 0x0010) != 0)
res |= Modifiers.FINAL;
if ((flags & 0x0200) != 0)
- res |= Modifiers.INTERFACE | Modifiers.ABSTRACTCLASS;
+ res |= Modifiers.INTERFACE | Modifiers.TRAIT | Modifiers.ABSTRACTCLASS;
return res | Modifiers.JAVA;
}