問題タブ [scalac]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala コンパイラが生成した名前をデコードする方法
私たちのコードは、次のメッセージで Scala コンパイラを強制終了しています。
それを理解するために、私はあるべき姿を理解しようとしてTuple2$mcJD$sp
います。のために生成されたクラス(Long, Double)
ですか?これはどこかに文書化されていますか?ありがとう!
これまでに見つけたいくつかの手がかり:
- 型の略語はClass.getNameに記載されているものと一致すると思います。
- 名前はSpecializeTypes.specializedNameで生成されます。コードによると、フォーマットは
m<abbreviated method specialization types>c<abbreviated class specialization types>$sp
.
おそらく、コンパイラの内部的なものと見なされ、どこにも文書化されていません。
scala - この Scala コードをコンパイルする方法
次の内容の sumit.scala というファイルがあります
コマンドラインでコンパイルしようとしています
エラーなしでコンパイルされますが、実行すると
私はたくさんのエラーを受け取ります。私はscalaを初めて使用し、パフォーマンスの違いを確認するためにコンパイルされたら、このコードの時間を計ろうとしています。「total_select_values」をオブジェクトに入れてみましたが(ここに示すように)違いはありません。
助けてくれてありがとう!
Scala情報と実際のエラーで更新
Scala バージョン 2.11.4 Java 1.7.0_40
java.lang.NoSuchMethodException: sumit.main([Ljava.lang.String;) at java.lang.Class.getMethod(Unknown Source) at scala.reflect.internal.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:66) ) scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:101) で scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:22) で scala.tools.nsc.ObjectRunner$ で.run(ObjectRunner.scala:39) で scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:29) scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39) で scala.tools .nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:65) で scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:87) で scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98) scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103) で scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) で
scala - WartRemover でコンパイルする別の sbt 構成またはタスクを作成するにはどうすればよいですか?
WartRemoverは scalac プラグインです。通常はsbt plugin経由で設定されます。
の通常の実行に影響を与えることなく、別の構成またはタスクとして sbt プロジェクトで WartRemover を実行できるようにしたいと考えていますcompile
。
私に Wartremover を追加した後、plugins.sbt
私は次のいくつかのバリエーションを試しました。
その後、新しい構成内と構成scalacOptions
内に、私が期待していたものが大まかに含まれていました。しかし、デバッグ モードで sbt を実行して scalac へのコマンド ライン引数を確認できるようにすると、両方のコマンドまたはどちらのコマンドもスイッチを通過しませんでした。スイッチしか表示されていなかったので、それは驚くべきことでした。lint
compile
lint:compile
compile
-P:wartremover:...
lint:scalacOptions
-P:wartremover:...
影響を与えずに WartRemover でコンパイルする別の sbt 構成またはタスクを作成するにはどうすればよいcompile:compile
ですか?
scala - RegexParser の Phase Typer で Scalac がハングする
私は、とりわけパーサーコンビネーターを備えたscalaプログラムを持っています。これは、 を拡張することによって行われscala.util.parsing.combinator.RegexParsers
ます。Scala 2.10 を使用して開発しましたが、すべて正常に動作していました。
昨日、システムを IntelliJ 14.02 とともに Scala 2.11.4 にアップグレードしました (それは問題ではありません)。
ただし、このプログラムを今コンパイルしようとすると、scalac
この段階でハングします。
scalac: phase typer on MyParser.scala
このコードには何も変更を加えていません。なぜハングしているのか、どこから始めればよいのかわかりません。IntelliJでは、トークンの後にandが続くconstants_def?
or などのパーサー式の後置演算子について警告がありました。 SIP : Language Modularization Featuresのために、次の行を追加しました。structure_def*
?
*
import scala.language.postfixOps
実際には何の効果もありませんでしたし、問題はまだ同じです。
何が起こっているのかをトラブルシューティングするにはどうすればよいですか? フェーズタイパーが無期限にぶら下がっている理由を理解し始める場所がわかりません。
scala - アクセス可能な値の型を持たないパス依存型クラスの証拠を解決できません
この事実を発見するのに 1 時間ほど立ち往生しました。
その理由がわかりません。私が考えることができる唯一のことは、scalac は、どのプレフィックスでもアクセスできる値の型を持たない型内で暗黙を見つけられないということです。参照できません。Scalac は明らかにFoo.this.foo
それにアクセスして暗黙を解決する必要がありますが、この場合はできません。
型クラスとパス依存型を組み合わせると、実質的に運命づけられているように感じます。この種のものを扱うことになります。そうしないとscalacはAPIメソッドの型を推測できず、ユーザーはそれらを明示的に宣言する必要があるためです。そこで、この種の設計を選択して、型が構築されFoo[T]
、API メソッドが既存の型を使用するようにしましたが、いくつかの本当に醜い問題とこの種のバグに遭遇し、私のアプリは過度に設計されたがらくたのように見えました...