首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我对新的dotty运行时完全不感兴趣。

我对新的dotty运行时完全不感兴趣。
EN

Stack Overflow用户
提问于 2019-11-10 02:46:06
回答 1查看 170关注 0票数 2

星期六早上在这里。尝试学习新的Scala编译器dotty。

在我的Mac上安装,使用

代码语言:javascript
复制
brew install lampepfl/brew/dotty

安装成功。我得到了版本

代码语言:javascript
复制
dotr -version
Starting dotty REPL...
Dotty compiler version 0.20.0-RC1 -- Copyright 2002-2019, LAMP/EPFL

已创建目录

代码语言:javascript
复制
mkdir dotty

Hello.scala写的这段代码

代码语言:javascript
复制
import Console._
@main def foo(s: String) : Unit =
 println(s"Hello $s")

我能够把它编译出来

代码语言:javascript
复制
dotc Hello.scala

我得到了一堆.class.tasty文件

下一步我做了

代码语言:javascript
复制
dotr
:load Hello.scala

现在,我得到了一个巨大的错误“爆炸”,并且dotr运行时完全死亡并退出。

我做了什么引起这次爆炸?这不是友好的错误消息。

代码语言:javascript
复制
Exception in thread "main" scala.MatchError: PackageDef(Ident(<empty>),List(ValDef(rs$line$1,Ident(rs$line$1$),
Apply(Select(New(Ident(rs$line$1$)),<init>),List())), TypeDef(rs$line$1$,Template(DefDef(<init>,List(),List(List()),
TypeTree[TypeRef(ThisType(TypeRef(NoPrefix,module class scala)),class Unit)],EmptyTree),List(Apply(Select(New(
TypeTree[TypeRef(ThisType(TypeRef(NoPrefix,module class lang)),class Object)]),<init>),List()), Select(Select(
Ident(_root_),scala),Serializable)),ValDef(_,SingletonTypeTree(Ident(rs$line$1)),EmptyTree),List(Import(Ident(Console),
List(ImportSelector(Ident(_),EmptyTree,EmptyTree))),DefDef(foo,List(),List(List(ValDef(s,Ident(String),EmptyTree))),
Ident(Unit),Apply(Ident(println),List(Apply(Select(Apply(Select(Select(Select(Ident(_root_),scala),StringContext),apply),
List(Typed(SeqLiteral(List(Literal(Constant(hello )), Literal(Constant())),TypeTree[TypeRef(TermRef(
ThisType(TypeRef(NoPrefix,module class scala)),module Predef),type String)]),
TypeTree[AppliedType(TypeRef(ThisType(TypeRef(NoPrefix,module class scala)),class <repeated>),
List(TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class scala)),module Predef),type String)))]))),s),
List(Typed(SeqLiteral(List(Ident(s)),TypeTree[TypeRef(ThisType(TypeRef(NoPrefix,module class scala)),class Any)]),
TypeTree[AppliedType(TypeRef(ThisType(TypeRef(NoPrefix,module class scala)),class <repeated>),

List(TypeRef(ThisType(TypeRef(NoPrefix,module class scala)),class Any)))]))))))))), TypeDef(foo,Template(DefDef(<init>,List(),List(List()),TypeTree[TypeRef(ThisType(TypeRef(NoPrefix,module class scala)),class Unit)],EmptyTree),List(Apply(Select(New(TypeTree[TypeRef(ThisType(TypeRef(NoPrefix,module class lang)),class Object)]),<init>),List())),ValDef(_,EmptyTree,EmptyTree),List(DefDef(main,List(),List(List(ValDef(args,TypeTree[AppliedType(TypeRef(ThisType(TypeRef(NoPrefix,module class scala)),class Array),List(TypeRef(ThisType(TypeRef(NoPrefix,module class lang)),class String)))],EmptyTree))),TypeTree[TypeRef(ThisType(TypeRef(NoPrefix,module class scala)),class Unit)],Try(Apply(Ident(foo),List(Apply(Apply(TypeApply(Ident(parseArgument),List(TypeTree[TypeRef(TermRef(ThisType(TypeRef(NoPrefix,module class scala)),module Predef),type String)])),List(Ident(args), Literal(Constant(0)))),List(Ident(given_FromString_String))))),List(CaseDef(Bind(error,Typed(Ident(_),TypeTree[TypeRef(ThisType(TypeRef(ThisType(TypeRef(NoPrefix,module class util)),module class CommandLineParser$)),class ParseError)])),EmptyTree,Apply(Ident(showError),List(Ident(error))))),EmptyTree))))))) (of class dotty.tools.dotc.ast.Trees$PackageDef)
    at dotty.tools.repl.CollectTopLevelImports.topLevelImports$1(CollectTopLevelImports.scala:23)
    at dotty.tools.repl.CollectTopLevelImports.run(CollectTopLevelImports.scala:28)
    at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:315)
    at scala.collection.immutable.List.map(List.scala:219)
    at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:316)
    at dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:162)
    at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
    at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
    at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
    at dotty.tools.dotc.Run.runPhases$5(Run.scala:172)
    at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:180)
    at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:65)
    at dotty.tools.dotc.Run.compileUnits(Run.scala:187)
    at dotty.tools.dotc.Run.compileUnits(Run.scala:129)
    at dotty.tools.repl.ReplCompiler.runCompilationUnit(ReplCompiler.scala:156)
    at dotty.tools.repl.ReplCompiler.compile(ReplCompiler.scala:166)
    at dotty.tools.repl.ReplDriver.compile(ReplDriver.scala:227)
    at dotty.tools.repl.ReplDriver.interpret(ReplDriver.scala:193)
    at dotty.tools.repl.ReplDriver.run$$anonfun$1(ReplDriver.scala:136)
    at dotty.tools.repl.ReplDriver.withRedirectedOutput(ReplDriver.scala:148)
    at dotty.tools.repl.ReplDriver.run(ReplDriver.scala:137)
    at dotty.tools.repl.ReplDriver.interpretCommand(ReplDriver.scala:345)
    at dotty.tools.repl.ReplDriver.interpret(ReplDriver.scala:200)
    at dotty.tools.repl.ReplDriver.loop$1(ReplDriver.scala:127)
    at dotty.tools.repl.ReplDriver.runUntilQuit$$anonfun$1(ReplDriver.scala:130)
    at dotty.tools.repl.ReplDriver.withRedirectedOutput(ReplDriver.scala:148)
    at dotty.tools.repl.ReplDriver.runUntilQuit(ReplDriver.scala:130)
    at dotty.tools.repl.Main$.main(Main.scala:6)
    at dotty.tools.repl.Main.main(Main.scala)
EN

回答 1

Stack Overflow用户

发布于 2019-11-10 03:43:59

您没有指定程序参数

代码语言:javascript
复制
$ dotr foo
Illegal command line: more arguments expected

$ dotr foo World
Hello World

只有dotr才会运行REPL。在REPL中,:load <path>的意思是“解释文件中的行”。dotr应该如何获取程序参数?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58782434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档