summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-07-02 12:18:44 +0000
committerMartin Odersky <odersky@gmail.com>2004-07-02 12:18:44 +0000
commit6eab12dda6edcc21726e771fdf32cdf3275ec9b6 (patch)
tree337ab8943510d8615042c1c601496cdc9b224967
parent45541e41cb9a6d456902240898e3efb9661d4372 (diff)
downloadscala-6eab12dda6edcc21726e771fdf32cdf3275ec9b6.tar.gz
scala-6eab12dda6edcc21726e771fdf32cdf3275ec9b6.tar.bz2
scala-6eab12dda6edcc21726e771fdf32cdf3275ec9b6.zip
*** empty log message ***
-rw-r--r--doc/reference/ExamplesPart.tex6
-rw-r--r--doc/reference/ReferencePart.tex4
-rw-r--r--sources/scala/tools/scalac/ast/parser/Parser.scala4
-rw-r--r--sources/scala/tools/scalac/ast/printer/HTMLPrinter.scala4
-rw-r--r--sources/scala/tools/scalac/ast/printer/TextTreePrinter.scala4
-rw-r--r--sources/scala/tools/scalac/backend/GenJVMFromICode.scala4
-rw-r--r--sources/scala/tools/scalac/icode/IBasicBlock.scala6
-rw-r--r--sources/scala/tools/scalac/icode/ICInstruction.scala6
-rw-r--r--sources/scala/tools/scalac/icode/ICTypeStack.scala4
-rw-r--r--sources/scala/tools/scalac/icode/ICode.scala4
-rw-r--r--sources/scala/tools/scalac/icode/ICodePhase.scala6
-rw-r--r--sources/scala/tools/scalac/icode/ICodePrinter.scala4
-rw-r--r--sources/scala/tools/scalac/transformer/TransMatch.scala4
-rw-r--r--sources/scala/tools/scalac/transformer/matching/FullRegularTranslator.scala4
-rw-r--r--sources/scala/tools/scalac/transformer/matching/MutableGrammar.scala4
-rw-r--r--sources/scala/tools/scalac/typechecker/Analyzer.scala25
-rwxr-xr-xsources/scala/tools/scalac/typechecker/View.scala4
-rw-r--r--sources/scala/tools/scalac/util/NewArray.scala5
-rw-r--r--sources/scala/tools/scalac/wholeprog/ApplicationBuilder.scala4
-rw-r--r--sources/scala/tools/scalac/wholeprog/Inline.scala4
-rw-r--r--sources/scala/tools/scalac/wholeprog/MonomorphicCS.scala4
-rw-r--r--sources/scalac/ast/TreeInfo.java28
-rw-r--r--sources/scalac/typechecker/RefCheck.java4
-rw-r--r--test/files/neg/imports.check12
24 files changed, 93 insertions, 65 deletions
diff --git a/doc/reference/ExamplesPart.tex b/doc/reference/ExamplesPart.tex
index a335b1d739..f6bcd5d595 100644
--- a/doc/reference/ExamplesPart.tex
+++ b/doc/reference/ExamplesPart.tex
@@ -833,7 +833,7 @@ two given numbers \code{a} and \code{b}:
\begin{lstlisting}
def powerOfTwo(x: int): int = if (x == 0) 1 else x * powerOfTwo(x - 1);
def sumPowersOfTwo(a: int, b: int): int =
- if (a > b) 0 else powerOfTwo(x) + sumPowersOfTwo(a + 1, b)
+ if (a > b) 0 else powerOfTwo(a) + sumPowersOfTwo(a + 1, b)
\end{lstlisting}
\end{enumerate}
These functions are all instances of
@@ -1438,10 +1438,10 @@ method is invoked by simply mentioning its name.
\begin{lstlisting}
class Rational(n: int, d: int) extends AnyRef {
... // as before
- def square = Rational(numer*numer, denom*denom);
+ def square = new Rational(numer*numer, denom*denom);
}
val r = new Rational(3,4);
-System.out.println(r.square); // prints``9/16''
+System.out.println(r.square); // prints``9/16''*
\end{lstlisting}
That is, parameterless methods are accessed just as value fields such
as \code{numer} are. The difference between values and parameterless
diff --git a/doc/reference/ReferencePart.tex b/doc/reference/ReferencePart.tex
index 4c29bd1a74..79b4cdf146 100644
--- a/doc/reference/ReferencePart.tex
+++ b/doc/reference/ReferencePart.tex
@@ -513,12 +513,12 @@ c: (Int) (String, String) String
A polymorphic method type is denoted internally as ~\lstinline@[$\tps\,$]$T$@~ where
\lstinline@[$\tps\,$]@ is a type parameter section
-~\lstinline@[$a_1$ <: $L_1$ >: $U_1 \commadots a_n$ <: $L_n$ >: $U_n$]@~
+~\lstinline@[$a_1$ >: $L_1$ <: $U_1 \commadots a_n$ >: $L_n$ <: $U_n$]@~
for some $n \geq 0$ and $T$ is a
(value or method) type. This type represents named methods that
take type arguments ~\lstinline@$S_1 \commadots S_n$@~ which
conform (\sref{sec:param-types}) to the lower bounds
-~\lstinline@$S_1 \commadots S_n$@~ and the upper bounds
+~\lstinline@$L_1 \commadots L_n$@~ and the upper bounds
~\lstinline@$U_1 \commadots U_n$@~ and that yield results of type $T$.
\example The declarations
diff --git a/sources/scala/tools/scalac/ast/parser/Parser.scala b/sources/scala/tools/scalac/ast/parser/Parser.scala
index 39d79db828..60111dd803 100644
--- a/sources/scala/tools/scalac/ast/parser/Parser.scala
+++ b/sources/scala/tools/scalac/ast/parser/Parser.scala
@@ -7,7 +7,7 @@
\* */
import scalac.symtab.Modifiers;
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.ast._;
import scalac.atree.AConstant;
import scalac._;
@@ -22,7 +22,7 @@ import scala.collection.mutable.ListBuffer;
package scala.tools.scalac.ast.parser {
-import scalac_symtab.Type;
+
/** A recursive descent parser for the programming language Scala.
*
diff --git a/sources/scala/tools/scalac/ast/printer/HTMLPrinter.scala b/sources/scala/tools/scalac/ast/printer/HTMLPrinter.scala
index f313cf7801..a40a71399e 100644
--- a/sources/scala/tools/scalac/ast/printer/HTMLPrinter.scala
+++ b/sources/scala/tools/scalac/ast/printer/HTMLPrinter.scala
@@ -8,12 +8,12 @@
// $Id$
import scalac.CompilationUnit;
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.ast.Tree;
package scala.tools.scalac.ast.printer {
-import scalac_symtab.Symbol;
+
import java.io.OutputStream;
import java.io.PrintWriter;
import java.lang.Math;
diff --git a/sources/scala/tools/scalac/ast/printer/TextTreePrinter.scala b/sources/scala/tools/scalac/ast/printer/TextTreePrinter.scala
index a2d877cfb3..98b5d35119 100644
--- a/sources/scala/tools/scalac/ast/printer/TextTreePrinter.scala
+++ b/sources/scala/tools/scalac/ast/printer/TextTreePrinter.scala
@@ -9,7 +9,7 @@
import scalac.ast.printer._;
import scalac.ast._;
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.util.Debug;
import scalac.{Global => scalac_Global, Phase};
import scalac.CompilationUnit;
@@ -18,7 +18,7 @@ import scalac.util.TypeNames;
package scala.tools.scalac.ast.printer {
-import scalac_symtab._;
+
import java.io._;
/**
diff --git a/sources/scala/tools/scalac/backend/GenJVMFromICode.scala b/sources/scala/tools/scalac/backend/GenJVMFromICode.scala
index 73acdb59ad..41e6a424c6 100644
--- a/sources/scala/tools/scalac/backend/GenJVMFromICode.scala
+++ b/sources/scala/tools/scalac/backend/GenJVMFromICode.scala
@@ -6,7 +6,7 @@
// $Id$
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.{Global => scalac_Global};
import scalac.atree._;
import scalac.CompilationUnit;
@@ -20,8 +20,6 @@ import java.io.File;
package scala.tools.scalac.backend {
-import scalac_symtab._;
-
/* This class implements the backend which create
* Java Virtual Machine's bytecode with
* The Intermediate Code of the compiler */
diff --git a/sources/scala/tools/scalac/icode/IBasicBlock.scala b/sources/scala/tools/scalac/icode/IBasicBlock.scala
index 034c2276d6..6eb073468f 100644
--- a/sources/scala/tools/scalac/icode/IBasicBlock.scala
+++ b/sources/scala/tools/scalac/icode/IBasicBlock.scala
@@ -7,13 +7,13 @@
// $Id$
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.atree._;
package scala.tools.scalac.icode {
-import scalac_symtab.Symbol;
-import scalac_symtab.Type;
+
+
/** This class represents a basic block */
class IBasicBlock (theLabel: int) {
diff --git a/sources/scala/tools/scalac/icode/ICInstruction.scala b/sources/scala/tools/scalac/icode/ICInstruction.scala
index d6521b84b9..2cf541e258 100644
--- a/sources/scala/tools/scalac/icode/ICInstruction.scala
+++ b/sources/scala/tools/scalac/icode/ICInstruction.scala
@@ -8,14 +8,14 @@
// $Id$
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.atree._;
package scala.tools.scalac.icode {
-import scalac_symtab.Symbol;
-import scalac_symtab.Type;
+
+
/** This class represents an instruction of intermediate code */
abstract class ICInstruction {
diff --git a/sources/scala/tools/scalac/icode/ICTypeStack.scala b/sources/scala/tools/scalac/icode/ICTypeStack.scala
index 8e3e9d5be8..c7b2110190 100644
--- a/sources/scala/tools/scalac/icode/ICTypeStack.scala
+++ b/sources/scala/tools/scalac/icode/ICTypeStack.scala
@@ -7,12 +7,12 @@
// $Id$
import scalac.atree._;
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.{Global => scalac_Global};
package scala.tools.scalac.icode {
-import scalac_symtab._;
+
/* This class simulates the type of the opperand
* stack of the ICode. */
diff --git a/sources/scala/tools/scalac/icode/ICode.scala b/sources/scala/tools/scalac/icode/ICode.scala
index 566cf12c24..514c15e0e5 100644
--- a/sources/scala/tools/scalac/icode/ICode.scala
+++ b/sources/scala/tools/scalac/icode/ICode.scala
@@ -11,13 +11,13 @@ import scalac.{Global => scalac_Global}
import scala.collection.mutable.HashMap;
import scala.collection.mutable.HashSet;
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.atree._;
import scalac.util.Debug;
package scala.tools.scalac.icode {
-import scalac_symtab._;
+
/** This class represents the intermediate code of a method*/
class ICode(label: String, global: scalac_Global) {
diff --git a/sources/scala/tools/scalac/icode/ICodePhase.scala b/sources/scala/tools/scalac/icode/ICodePhase.scala
index 513c7ed65c..6b3f29cdf4 100644
--- a/sources/scala/tools/scalac/icode/ICodePhase.scala
+++ b/sources/scala/tools/scalac/icode/ICodePhase.scala
@@ -6,7 +6,7 @@
// $Id$
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.transformer.{ICodePhase => scalac_ICodePhase}
import scalac.{Global => scalac_Global}
import scalac.{CompilationUnit => scalac_CompilationUnit}
@@ -18,8 +18,8 @@ import ch.epfl.lamp.util.CodePrinter;
package scala.tools.scalac.icode {
-import scalac_symtab.Symbol;
-import scalac_symtab.Type;
+
+
/** This class represents the ICode phase. This phase use the ATrees
* that represents the code with some primitives backends-like
diff --git a/sources/scala/tools/scalac/icode/ICodePrinter.scala b/sources/scala/tools/scalac/icode/ICodePrinter.scala
index 7af0d6fa5e..2934f59033 100644
--- a/sources/scala/tools/scalac/icode/ICodePrinter.scala
+++ b/sources/scala/tools/scalac/icode/ICodePrinter.scala
@@ -13,11 +13,11 @@ import scalac.CompilationUnit;
import scalac.{Global => scalac_Global}
import scalac.atree._;
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
package scala.tools.scalac.icode {
-import scalac_symtab.Symbol;
+
/* This class implements a Printer for the ICode */
class ICodePrinter (printer: CodePrinter) extends ATreePrinter (printer: CodePrinter) {
diff --git a/sources/scala/tools/scalac/transformer/TransMatch.scala b/sources/scala/tools/scalac/transformer/TransMatch.scala
index 04e96e359a..a86c63e9cb 100644
--- a/sources/scala/tools/scalac/transformer/TransMatch.scala
+++ b/sources/scala/tools/scalac/transformer/TransMatch.scala
@@ -11,7 +11,7 @@ import java.util._;
import scalac.{Global => scalac_Global};
import scalac._;
import scalac.ast._;
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.util._; // Names
import scalac.transformer.{ OwnerTransformer => scalac_transformer_OwnerTransformer };
@@ -28,7 +28,7 @@ import scalac.transformer.matching.AlgebraicMatcher ;
*/
package scala.tools.scalac.transformer {
-import scalac_symtab._;
+
import matching.FullRegularTranslator ;
import matching.GrammarPrinter ; //DEBUG
diff --git a/sources/scala/tools/scalac/transformer/matching/FullRegularTranslator.scala b/sources/scala/tools/scalac/transformer/matching/FullRegularTranslator.scala
index fce0920e2e..486bb4b2d4 100644
--- a/sources/scala/tools/scalac/transformer/matching/FullRegularTranslator.scala
+++ b/sources/scala/tools/scalac/transformer/matching/FullRegularTranslator.scala
@@ -8,14 +8,14 @@ import scala.collection.immutable;
import scalac.ast._ ;
import scalac.{Global => scalac_Global}
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.util.Names ;
package scala.tools.scalac.transformer.matching {
- import scalac_symtab.Symbol ;
+
import PatternInfo.minimalWidth;
import TreeInfo.isSequenceValued;
diff --git a/sources/scala/tools/scalac/transformer/matching/MutableGrammar.scala b/sources/scala/tools/scalac/transformer/matching/MutableGrammar.scala
index 816d2b7c93..7a7c7e2b2c 100644
--- a/sources/scala/tools/scalac/transformer/matching/MutableGrammar.scala
+++ b/sources/scala/tools/scalac/transformer/matching/MutableGrammar.scala
@@ -2,11 +2,11 @@
import scala.collection.immutable;
import scala.collection.mutable;
import scala.runtime.matching._;
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
package scala.tools.scalac.transformer.matching {
-import scalac_symtab.Symbol;
+
object InitialGrammar {
/** returns an initial grammar, with any tree rule and any hedge rule */
diff --git a/sources/scala/tools/scalac/typechecker/Analyzer.scala b/sources/scala/tools/scalac/typechecker/Analyzer.scala
index 8266dd1c59..5c973103d5 100644
--- a/sources/scala/tools/scalac/typechecker/Analyzer.scala
+++ b/sources/scala/tools/scalac/typechecker/Analyzer.scala
@@ -23,7 +23,7 @@ import scalac.atree.AConstant;
import scalac.atree.AConstant$CHAR;
import scalac.atree.AConstant$INT;
import scalac.symtab.classfile._;
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import Tree._;
import java.util.HashMap;
import scala.tools.scalac.util.NewArray;
@@ -37,7 +37,6 @@ import java.lang.{Boolean, Byte, Short, Character, Integer, Object}
*/
class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(global) {
- import scalac_symtab._;
import Modifiers._;
import Kinds._;
@@ -1636,6 +1635,25 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
}
}
+ if (stopPos > tree.pos) {
+ // set stopPos to beginning of block enclosed in the scope which defines the
+ // referenced symbol.
+ var lastc = Context.NONE;
+ var c = nextcontext;
+ while (c.outer.scope != null && c.outer.scope.lookup(name) == sym) {
+ c.tree match {
+ case Tree$Block(_, _) | Tree$CaseDef(_, _, _) | Tree$ClassDef(_, _, _, _, _, _) | Tree$ModuleDef(_, _, _, _) =>
+ lastc = c;
+ case _ =>
+ }
+ c = c.outer
+ }
+ if (lastc != Context.NONE) {
+ //System.out.println("revising stop to [" + lastc.tree + "]; symbol = " + sym + ", context = " + nextcontext);//DEBUG
+ stopPos = lastc.tree.pos;
+ }
+ }
+
var impcontext: Context = context.prevImport;
var lastimpcontext: Context = null;
var sym1: Symbol = Symbol.NONE;
@@ -2834,7 +2852,8 @@ class Analyzer(global: scalac_Global, descr: AnalyzerPhase) extends Transformer(
}
case Tree$Select(qual, name) =>
- val qualmode: int = EXPRmode | POLYmode | QUALmode;
+ val qualmode: int = if (name == Names.match) EXPRmode
+ else EXPRmode | POLYmode | QUALmode;
var qual1: Tree = transform(qual, qualmode);
if (name.isTypeName())
qual1 = checkStable(qual1);
diff --git a/sources/scala/tools/scalac/typechecker/View.scala b/sources/scala/tools/scalac/typechecker/View.scala
index 814e29cc7c..12006c292c 100755
--- a/sources/scala/tools/scalac/typechecker/View.scala
+++ b/sources/scala/tools/scalac/typechecker/View.scala
@@ -5,12 +5,12 @@
**
** $Id$
\* */
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.ast._;
package scala.tools.scalac.typechecker {
-import scalac_symtab._;
+
case class View(sym: Symbol, symtype: Type, qual: Tree, context: Context) {
var locked = false;
diff --git a/sources/scala/tools/scalac/util/NewArray.scala b/sources/scala/tools/scalac/util/NewArray.scala
index d8e159fd75..ba6e1b002f 100644
--- a/sources/scala/tools/scalac/util/NewArray.scala
+++ b/sources/scala/tools/scalac/util/NewArray.scala
@@ -8,14 +8,11 @@
import scalac.ast._;
import scalac.checkers.Checker;
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.util.Name;
package scala.tools.scalac.util {
-import scalac_symtab.Symbol;
-import scalac_symtab.Type;
-
object NewArray {
def Tree(xs: Tree*): Array[Tree] = {
diff --git a/sources/scala/tools/scalac/wholeprog/ApplicationBuilder.scala b/sources/scala/tools/scalac/wholeprog/ApplicationBuilder.scala
index c82248bcd6..5eb35ab95e 100644
--- a/sources/scala/tools/scalac/wholeprog/ApplicationBuilder.scala
+++ b/sources/scala/tools/scalac/wholeprog/ApplicationBuilder.scala
@@ -2,7 +2,7 @@
import scalac.{Global => scalac_Global}
import scalac.{CompilationUnit => scalac_CompilationUnit}
import scalac.atree._;
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.util.Name;
import scalac.util._;
import scala.collection.mutable._;
@@ -10,7 +10,7 @@ import scalac.ast._;
package scala.tools.scalac.wholeprog {
-import scalac_symtab._;
+
/**
* This class builds the set of classes included in the Application (whole
diff --git a/sources/scala/tools/scalac/wholeprog/Inline.scala b/sources/scala/tools/scalac/wholeprog/Inline.scala
index 101b20b960..d5f0f0db46 100644
--- a/sources/scala/tools/scalac/wholeprog/Inline.scala
+++ b/sources/scala/tools/scalac/wholeprog/Inline.scala
@@ -11,7 +11,7 @@
import scalac.{Global => scalac_Global}
import scalac.{CompilationUnit => scalac_CompilationUnit}
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.util._;
import scala.collection.mutable._;
import scalac.ast._;
@@ -21,7 +21,7 @@ import scala.tools.util._;
package scala.tools.scalac.wholeprog {
-import scalac_symtab._;
+
/** Perform inlining of the sites passed as parameter */
class InlineMethods(sites: List[Tuple3[GNode[Symbol, MethodNode], GNode[Symbol, MethodNode], CallSite]],
diff --git a/sources/scala/tools/scalac/wholeprog/MonomorphicCS.scala b/sources/scala/tools/scalac/wholeprog/MonomorphicCS.scala
index 83b1b7cabd..7605586cec 100644
--- a/sources/scala/tools/scalac/wholeprog/MonomorphicCS.scala
+++ b/sources/scala/tools/scalac/wholeprog/MonomorphicCS.scala
@@ -14,7 +14,7 @@
import scalac.{Global => scalac_Global}
import scalac.{CompilationUnit => scalac_CompilationUnit}
-import scalac.{symtab => scalac_symtab}
+import scalac.symtab._;
import scalac.util._;
import scala.collection.mutable._;
import scalac.ast._;
@@ -23,7 +23,7 @@ import scala.tools.scalac.wholeprog.graph._;
package scala.tools.scalac.wholeprog {
-import scalac_symtab._;
+
class MonomorphicCallSites(globall: scalac_Global, application: Set[Symbol]) {
type CallGraph = Graph[Symbol, MethodNode, CallEdge];
diff --git a/sources/scalac/ast/TreeInfo.java b/sources/scalac/ast/TreeInfo.java
index ed442bdf5d..caeb7d72c0 100644
--- a/sources/scalac/ast/TreeInfo.java
+++ b/sources/scalac/ast/TreeInfo.java
@@ -200,19 +200,21 @@ public class TreeInfo {
switch (tree) {
case Import(Tree expr, Name[] selectors):
Type pre = tree.symbol().type();
- boolean renamed = false;
- for (int i = 0; i < selectors.length; i = i + 2) {
- if (i + 1 < selectors.length && name.toTermName() == selectors[i + 1]) {
- if (name.isTypeName())
- return pre.lookupNonPrivate(selectors[i].toTypeName());
- else
- return pre.lookupNonPrivate(selectors[i]);
- } else if (name.toTermName() == selectors[i]) {
- renamed = true;
- } else if (selectors[i] == Names.IMPORT_WILDCARD && !renamed) {
- return pre.lookupNonPrivate(name);
- }
- }
+ if (pre != Type.ErrorType) {
+ boolean renamed = false;
+ for (int i = 0; i < selectors.length; i = i + 2) {
+ if (i + 1 < selectors.length && name.toTermName() == selectors[i + 1]) {
+ if (name.isTypeName())
+ return pre.lookupNonPrivate(selectors[i].toTypeName());
+ else
+ return pre.lookupNonPrivate(selectors[i]);
+ } else if (name.toTermName() == selectors[i]) {
+ renamed = true;
+ } else if (selectors[i] == Names.IMPORT_WILDCARD && !renamed) {
+ return pre.lookupNonPrivate(name);
+ }
+ }
+ }
return Symbol.NONE;
default:
throw new ApplicationError();
diff --git a/sources/scalac/typechecker/RefCheck.java b/sources/scalac/typechecker/RefCheck.java
index 797d38fc08..dc383e5067 100644
--- a/sources/scalac/typechecker/RefCheck.java
+++ b/sources/scalac/typechecker/RefCheck.java
@@ -849,10 +849,12 @@ public class RefCheck extends Transformer implements Modifiers, Kinds {
Tree[] body1;
if (sym.isCaseClass()) {
body1 = addCaseMethods(templ.body, sym);
- } else {
+ } else if ((sym.flags & ABSTRACT) == 0) {
body1 = new Tree[templ.body.length + 1];
System.arraycopy(templ.body, 0, body1, 0, templ.body.length);
body1[templ.body.length] = tagMethod(sym);
+ } else {
+ body1 = templ.body;
}
return copy.Template(templ, templ.parents, body1);
}
diff --git a/test/files/neg/imports.check b/test/files/neg/imports.check
index 911d300c6f..309b1659a1 100644
--- a/test/files/neg/imports.check
+++ b/test/files/neg/imports.check
@@ -1,3 +1,4 @@
+testing: /home/odersky/scala/test/files/neg/imports.scala [FAILED]
imports.scala:26: not found: value v_coi
def method: C_coi = v_coi;
^
@@ -7,6 +8,9 @@ imports.scala:27: not found: value v_coi
imports.scala:29: not found: value v_coi
check("C_coi", "v_coi ", v_coi);
^
+imports.scala:56: illegal cyclic reference involving object o_cio
+import o_cio.v_cio;
+ ^
imports.scala:47: not found: value v_cio
def method: C_cio = v_cio;
^
@@ -16,6 +20,12 @@ imports.scala:48: not found: value v_cio
imports.scala:50: not found: value v_cio
check("C_cio", "v_cio ", v_cio);
^
+imports.scala:79: illegal cyclic reference involving value import o_ico
+object o_ico {
+ ^
+imports.scala:88: illegal cyclic reference involving value import o_ioc
+object o_ioc {
+ ^
imports.scala:136: not found: value v_oci
def method: C_oci = v_oci;
^
@@ -25,4 +35,4 @@ imports.scala:137: not found: value v_oci
imports.scala:139: not found: value v_oci
check("C_oci", "v_oci ", v_oci);
^
-9 errors found
+12 errors found