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
Problem with structural typing #967
Comments
Imported From: https://issues.scala-lang.org/browse/SI-967?orig=1 |
@odersky said: |
@dubochet said: More precisely --- take a deep breath at that point ---, the compiler must reject method calls on structural types that contain methods in which a parameter is defined as a type member of the structural type. I'll implement that test when I have time. |
@dubochet said: |
@milessabin said: scala> import scala.language.reflectiveCalls
import scala.language.reflectiveCalls
scala> type Nat = { type T; val z: T; def s()(arg: T): T }
defined type alias Nat
scala> val nat : Nat = new { type T = Int; val z = 0; def s()(arg:Int) = arg + 1 }
nat: Nat = $anon$1@4a2ead0a
scala> nat.z
res0: nat.T = 0
scala> nat.s()(nat.z)
java.lang.NoSuchMethodException: $anon$1.s(java.lang.Object)
at java.lang.Class.getMethod(Class.java:1622)
at .reflMethod$Method1(<console>:11)
at .<init>(<console>:11)
at .<clinit>(<console>:11)
at .<init>(<console>:7)
at .<clinit>(<console>)
at $print(<console>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:731)
at scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:980)
at scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:570)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:601)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:565)
at scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:745)
at scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:790)
at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:702)
at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:566)
at scala.tools.nsc.interpreter.ILoop.innerLoop$1(ILoop.scala:573)
at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:576)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:867)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:822)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:822)
at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)
at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:822)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:83)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:105)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) |
@JamesIry said: |
Olivier Blanvillain (OlivierBlanvillain) said: |
While trying to simulate SML:
The text was updated successfully, but these errors were encountered: