Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

inter-package protected nested-trait poymorphic expression crash #10

Closed
scabug opened this issue Aug 28, 2007 · 3 comments
Closed

inter-package protected nested-trait poymorphic expression crash #10

scabug opened this issue Aug 28, 2007 · 3 comments
Assignees

Comments

@scabug
Copy link

scabug commented Aug 28, 2007

Aladdin: [http://scala-webapps.epfl.ch/bugtracking/bugs/displayItem.do?id=1289 bug 1289]

== Code ==

// two packages
// pkg1/Presentations.scala
package pkg1
trait Presentations {
   trait ProjectImpl {
     trait FileImpl
     protected def lockTyper[T](f : => T) = {
       if (this == null) None
       else Some(f)
     }
   }
}
// pkg2/PresentationsX.scala
package pkg2
trait PresentationsX extends pkg1.Presentations {
   trait ProjectImpl extends super.ProjectImpl {
     trait FileImpl extends super.FileImpl {
       lockTyper(Console.println)
     }
   }
}

== What happened ==

scala.tools.nsc.symtab.Types$$TypeError: polymorphic expression cannot  
be instantiated to expected type;
  found   : [T(in method lockTyper)](=> T(in method lockTyper))Option 
[T(in method lockTyper)]
  required: Option[(some other)T(in method lockTyper)]
	at scala.tools.nsc.typechecker.Contexts$$Context.error(Contexts.scala: 
366)
	at scala.tools.nsc.typechecker.Infer$$Inferencer.error(Infer.scala:218)
	at scala.tools.nsc.typechecker.Infer$$Inferencer.substExpr 
(Infer.scala:763)
	at scala.tools.nsc.typechecker.Infer$$Inferencer.inferExprInstance 
(Infer.scala:748)
	at scala.tools.nsc.typechecker.Typers$$Typer.instantiate(Typers.scala: 
795)
	at scala.tools.nsc.typechecker.Typers$$Typer.adapt(Typers.scala:734)
	at scala.tools.nsc.typechecker.Typers$$Typer.adapt(Typers.scala:624)
	at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:2961)
	at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:3003)
	at scala.tools.nsc.typechecker.Typers$$Typer.transformedOrTyped 
(Typers.scala:3052)
	at scala.tools.nsc.typechecker.Typers$$Typer.typedDefDef(Typers.scala: 
1262)
	at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:2700)
	at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:2959)
	at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:2992)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.makeAccessor(SuperAccessors.scala:253)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.transform(SuperAccessors.scala:130)
	at scala.tools.nsc.ast.Trees$$Transformer.transform(Trees.scala:1320)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.transform(TypingTransformers.scala:46)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.transform(SuperAccessors.scala:191)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.transform(SuperAccessors.scala:185)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$27.apply 
(Trees.scala:1355)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$27.apply 
(Trees.scala:1355)
	at scala.List$$.loop$$0(List.scala:244)
	at scala.List$$.mapConserve(List.scala:261)
	at scala.tools.nsc.ast.Trees$$Transformer.transformTrees(Trees.scala: 
1355)
	at scala.tools.nsc.typechecker.SuperAccessors$$SuperAccTransformer$$ 
$$anonfun$$8.apply(SuperAccessors.scala:112)
	at scala.tools.nsc.typechecker.SuperAccessors$$SuperAccTransformer$$ 
$$anonfun$$8.apply(SuperAccessors.scala:112)
	at scala.tools.nsc.ast.Trees$$Transformer.atOwner(Trees.scala:1379)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:33)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:27)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.atOwner(SuperAccessors.scala:202)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.transform(SuperAccessors.scala:112)
	at scala.tools.nsc.ast.Trees$$Transformer.transformTemplate 
(Trees.scala:1357)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$21.apply 
(Trees.scala:1254)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$21.apply 
(Trees.scala:1254)
	at scala.tools.nsc.ast.Trees$$Transformer.atOwner(Trees.scala:1379)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:33)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:27)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.atOwner(SuperAccessors.scala:202)
	at scala.tools.nsc.ast.Trees$$Transformer.transform(Trees.scala:1253)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.transform(TypingTransformers.scala:46)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.transform(SuperAccessors.scala:99)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$27.apply 
(Trees.scala:1355)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$27.apply 
(Trees.scala:1355)
	at scala.List$$.loop$$0(List.scala:244)
	at scala.List$$.mapConserve(List.scala:261)
	at scala.tools.nsc.ast.Trees$$Transformer.transformTrees(Trees.scala: 
1355)
	at scala.tools.nsc.typechecker.SuperAccessors$$SuperAccTransformer$$ 
$$anonfun$$8.apply(SuperAccessors.scala:112)
	at scala.tools.nsc.typechecker.SuperAccessors$$SuperAccTransformer$$ 
$$anonfun$$8.apply(SuperAccessors.scala:112)
	at scala.tools.nsc.ast.Trees$$Transformer.atOwner(Trees.scala:1379)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:33)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:27)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.atOwner(SuperAccessors.scala:202)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.transform(SuperAccessors.scala:112)
	at scala.tools.nsc.ast.Trees$$Transformer.transformTemplate 
(Trees.scala:1357)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$21.apply 
(Trees.scala:1254)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$21.apply 
(Trees.scala:1254)
	at scala.tools.nsc.ast.Trees$$Transformer.atOwner(Trees.scala:1379)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:33)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:27)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.atOwner(SuperAccessors.scala:202)
	at scala.tools.nsc.ast.Trees$$Transformer.transform(Trees.scala:1253)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.transform(TypingTransformers.scala:46)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.transform(SuperAccessors.scala:99)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$27.apply 
(Trees.scala:1355)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$27.apply 
(Trees.scala:1355)
	at scala.List$$.loop$$0(List.scala:244)
	at scala.List$$.mapConserve(List.scala:261)
	at scala.tools.nsc.ast.Trees$$Transformer.transformTrees(Trees.scala: 
1355)
	at scala.tools.nsc.typechecker.SuperAccessors$$SuperAccTransformer$$ 
$$anonfun$$8.apply(SuperAccessors.scala:112)
	at scala.tools.nsc.typechecker.SuperAccessors$$SuperAccTransformer$$ 
$$anonfun$$8.apply(SuperAccessors.scala:112)
	at scala.tools.nsc.ast.Trees$$Transformer.atOwner(Trees.scala:1379)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:33)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:27)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.atOwner(SuperAccessors.scala:202)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.transform(SuperAccessors.scala:112)
	at scala.tools.nsc.ast.Trees$$Transformer.transformTemplate 
(Trees.scala:1357)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$21.apply 
(Trees.scala:1254)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$21.apply 
(Trees.scala:1254)
	at scala.tools.nsc.ast.Trees$$Transformer.atOwner(Trees.scala:1379)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:33)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:27)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.atOwner(SuperAccessors.scala:202)
	at scala.tools.nsc.ast.Trees$$Transformer.transform(Trees.scala:1253)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.transform(TypingTransformers.scala:46)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.transform(SuperAccessors.scala:99)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$33.apply 
(Trees.scala:1373)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$33.apply 
(Trees.scala:1371)
	at scala.List$$.loop$$0(List.scala:244)
	at scala.List$$.mapConserve(List.scala:261)
	at scala.tools.nsc.ast.Trees$$Transformer.transformStats(Trees.scala: 
1371)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$20.apply 
(Trees.scala:1250)
	at scala.tools.nsc.ast.Trees$$Transformer$$$$anonfun$$20.apply 
(Trees.scala:1250)
	at scala.tools.nsc.ast.Trees$$Transformer.atOwner(Trees.scala:1379)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:33)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.atOwner(TypingTransformers.scala:27)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.atOwner(SuperAccessors.scala:202)
	at scala.tools.nsc.ast.Trees$$Transformer.transform(Trees.scala:1249)
	at scala.tools.nsc.transform.TypingTransformers 
$$TypingTransformer.transform(TypingTransformers.scala:46)
	at scala.tools.nsc.typechecker.SuperAccessors 
$$SuperAccTransformer.transform(SuperAccessors.scala:191)
	at scala.tools.nsc.ast.Trees$$Transformer.transformUnit(Trees.scala: 
1374)
	at scala.tools.nsc.transform.Transform$$Phase.apply(Transform.scala:30)
	at scala.tools.nsc.Global$$GlobalPhase.applyPhase(Global.scala:245)
	at scala.tools.nsc.Global$$GlobalPhase$$$$anonfun$$2.apply(Global.scala: 
233)
	at scala.tools.nsc.Global$$GlobalPhase$$$$anonfun$$2.apply(Global.scala: 
233)
	at scala.Iterator$$class.foreach(Iterator.scala:375)
	at scala.collection.mutable.ListBuffer$$$$anon$$0.foreach 
(ListBuffer.scala:255)
	at scala.tools.nsc.Global$$GlobalPhase.run(Global.scala:233)
	at scala.tools.nsc.Global$$Run.compileSources(Global.scala:540)
	at scala.tools.nsc.Global$$Run.compile(Global.scala:625)
	at ch.epfl.lamp.sdt.build.ScalaCompilerManager$$ScalaCompiler.compile 
(ScalaCompilerManager.java:263)
	at ch.epfl.lamp.sdt.build.ScalaProjectBuilder.build 
(ScalaProjectBuilder.java:153)
	at org.eclipse.core.internal.events.BuildManager$$2.run 
(BuildManager.java:624)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.internal.events.BuildManager.basicBuild 
(BuildManager.java:166)
	at org.eclipse.core.internal.events.BuildManager.basicBuild 
(BuildManager.java:197)
	at org.eclipse.core.internal.events.BuildManager$$1.run 
(BuildManager.java:246)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.internal.events.BuildManager.basicBuild 
(BuildManager.java:249)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop 
(BuildManager.java:302)
	at org.eclipse.core.internal.events.BuildManager.build 
(BuildManager.java:334)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild 
(AutoBuildJob.java:137)
	at org.eclipse.core.internal.events.AutoBuildJob.run 
(AutoBuildJob.java:235)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

== What expected ==

@scabug
Copy link
Author

scabug commented Aug 28, 2007

Imported From: https://issues.scala-lang.org/browse/SI-10?orig=1
Reporter: @michelou

@scabug
Copy link
Author

scabug commented Nov 21, 2007

@dragos said:
Fixed and improved protected accessors w.r.t. overloading and instantiation when they're polymorphic.

@scabug
Copy link
Author

scabug commented Jan 14, 2009

@odersky said:
Milestone 2.6.1 deleted

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants