2017-03-03 22 views
0

コンパイル時にこのエラーが発生します。私はこの具体的な主張が何を意味するのか分かりません。私は、基本クラスを作成しようとしているし、それを拡張する2つのクラス。基本的に2つのクラスは基本クラスをより単純な方法で使用する方法です。拡張がこのコンパイルの問題を引き起こしている理由はわかりません。IntelliJでScalaをコンパイルするとアサーションが失敗する

Error:scalac: Error: assertion failed: { 
    <artifact> val x$7: com.acme.ruleengine.expressions.utility.LastExpression[Double] @scala.reflect.internal.annotations.uncheckedBounds = com.acme.ruleengine.expressions.data.TimeSeriesExpression.apply[Double](metricName).last; 
    <artifact> val x$8: com.acme.ruleengine.Context = context; 
    <artifact> val x$9: String = ruleName; 
    <artifact> val x$10: String = ruleFriendlyName; 
    <artifact> val x$11: String = ruleDescription; 
    <artifact> val x$12: com.acme.server.sensor.models.managementprocess.alerts.dto.AlertSeverity = severity; 
    <artifact> val x$13: String = metricName; 
    <artifact> val x$14: Any = threshold; 
    <artifact> val x$15: com.acme.data.conditions.TagsStoreCondition = metaCondition; 
    <artifact> val x$16: String = applicableMetricTag; 
    <artifact> val x$17: String = alertItemDescriptionFormat; 
    <artifact> val x$18: String = alertDescription; 
    <artifact> val x$19: String = baseRemediationText; 
    <artifact> val x$20: com.acme.server.rules.library.ThresholdDirection.ThresholdDirection = thresholdDirection; 
    <artifact> val x$21: String = alertItemsHeader; 
    <artifact> val x$22: Seq[(scala.util.matching.Regex, String)] @scala.reflect.internal.annotations.uncheckedBounds = itemSpecificDescription; 
    NumericThresholdOnDoubleMetricWithItemsTemplateRule.super.<init>(x$8, x$9, x$10, x$11, x$12, x$7, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$20, x$21, x$22) 
}(<vendorToRemediationText: error>) 
java.lang.AssertionError: assertion failed: { 
    <artifact> val x$7: com.acme.ruleengine.expressions.utility.LastExpression[Double] @scala.reflect.internal.annotations.uncheckedBounds = com.acme.ruleengine.expressions.data.TimeSeriesExpression.apply[Double](metricName).last; 
    <artifact> val x$8: com.acme.ruleengine.Context = context; 
    <artifact> val x$9: String = ruleName; 
    <artifact> val x$10: String = ruleFriendlyName; 
    <artifact> val x$11: String = ruleDescription; 
    <artifact> val x$12: com.acme.server.sensor.models.managementprocess.alerts.dto.AlertSeverity = severity; 
    <artifact> val x$13: String = metricName; 
    <artifact> val x$14: Any = threshold; 
    <artifact> val x$15: com.acme.data.conditions.TagsStoreCondition = metaCondition; 
    <artifact> val x$16: String = applicableMetricTag; 
    <artifact> val x$17: String = alertItemDescriptionFormat; 
    <artifact> val x$18: String = alertDescription; 
    <artifact> val x$19: String = baseRemediationText; 
    <artifact> val x$20: com.acme.server.rules.library.ThresholdDirection.ThresholdDirection = thresholdDirection; 
    <artifact> val x$21: String = alertItemsHeader; 
    <artifact> val x$22: Seq[(scala.util.matching.Regex, String)] @scala.reflect.internal.annotations.uncheckedBounds = itemSpecificDescription; 
    NumericThresholdOnDoubleMetricWithItemsTemplateRule.super.<init>(x$8, x$9, x$10, x$11, x$12, x$7, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$20, x$21, x$22) 
}(<vendorToRemediationText: error>) 
    at scala.tools.nsc.typechecker.Typers$Typer.computeParamAliases(Typers.scala:2037) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2215) 
    at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5308) 
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5359) 
    at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396) 
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423) 
    ... 
    at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:101) 
    at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:47) 
    at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:41) 
    at org.jetbrains.jps.incremental.scala.local.IdeaIncrementalCompiler.compile(IdeaIncrementalCompiler.scala:29) 
    at org.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:26) 
    at org.jetbrains.jps.incremental.scala.remote.Main$.make(Main.scala:67) 
    at org.jetbrains.jps.incremental.scala.remote.Main$.nailMain(Main.scala:24) 
    at org.jetbrains.jps.incremental.scala.remote.Main.nailMain(Main.scala) 
    at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.martiansoftware.nailgun.NGSession.run(NGSession.java:319) 

コードは次のとおりです。

package com.acme.server.rules.library 

case class NumericThresholdWithItemsTemplateRule(context: Context, ruleName: String, ruleFriendlyName: String, ruleDescription: String, 
                   severity: AlertSeverity = AlertSeverity.ERROR, 
                   value: Expression[Option[Double]], 
                   metricName: String, threshold: Any, metaCondition: TagsStoreCondition = True, 
                   applicableMetricTag: String, alertItemDescriptionFormat: String, alertDescription: String, baseRemediationText: String, thresholdDirection: ThresholdDirection = ThresholdDirection.ABOVE, 
                   alertItemsHeader: String, itemSpecificDescription: Seq[(Regex, String)] = Seq(".*".r -> "")) 
                   (vendorToRemediationText: (String, String)*) extends PerDeviceRule with RuleHelper { 

    ... 
} 

case class NumericThresholdOnDoubleMetricWithItemsTemplateRule(override val context: Context, override val ruleName: String, override val ruleFriendlyName: String, override val ruleDescription: String, 
                   override val severity: AlertSeverity = AlertSeverity.ERROR, 
                   override val metricName: String, override val threshold: Any, override val metaCondition: TagsStoreCondition = True, 
                   override val applicableMetricTag: String, override val alertItemDescriptionFormat: String, override val alertDescription: String, override val baseRemediationText: String, override val thresholdDirection: ThresholdDirection = ThresholdDirection.ABOVE, 
                   override val alertItemsHeader: String, override val itemSpecificDescription: Seq[(Regex, String)] = Seq(".*".r -> "")) 
                   (vendorToRemediationText: (String, String)*) extends NumericThresholdWithItemsTemplateRule(
                   value = TimeSeriesExpression[Double](metricName).last, 
                   context = context, ruleName = ruleName, ruleFriendlyName = ruleFriendlyName, ruleDescription = ruleDescription, severity = severity, metricName = metricName, threshold = threshold, metaCondition = metaCondition, applicableMetricTag = applicableMetricTag, alertItemDescriptionFormat = alertItemDescriptionFormat, alertDescription = alertDescription, baseRemediationText = baseRemediationText, thresholdDirection = thresholdDirection, alertItemsHeader = alertItemsHeader, itemSpecificDescription = itemSpecificDescription)(vendorToRemediationText) { 

} 

case class NumericThresholdOnComplexMetricWithItemsTemplateRule(override val context: Context, override val ruleName: String, override val ruleFriendlyName: String, override val ruleDescription: String, 
                   override val severity: AlertSeverity = AlertSeverity.ERROR, 
                   override val metricName: String, override val threshold: Any, override val metaCondition: TagsStoreCondition = True, 
                   override val applicableMetricTag: String, override val alertItemDescriptionFormat: String, override val alertDescription: String, override val baseRemediationText: String, override val thresholdDirection: ThresholdDirection = ThresholdDirection.ABOVE, 
                   override val alertItemsHeader: String, override val itemSpecificDescription: Seq[(Regex, String)] = Seq(".*".r -> "")) 
                   (vendorToRemediationText: (String, String)*) extends NumericThresholdWithItemsTemplateRule(
    value = ToDoubleExpression(SingleSnapshotExtractExpression(SnapshotExpression(metricName).asSingle().mostRecent(), "value")), 
    context = context, ruleName = ruleName, ruleFriendlyName = ruleFriendlyName, ruleDescription = ruleDescription, severity = severity, metricName = metricName, threshold = threshold, metaCondition = metaCondition, applicableMetricTag = applicableMetricTag, alertItemDescriptionFormat = alertItemDescriptionFormat, alertDescription = alertDescription, baseRemediationText = baseRemediationText, thresholdDirection = thresholdDirection, alertItemsHeader = alertItemsHeader, itemSpecificDescription = itemSpecificDescription)(vendorToRemediationText) { 

} 

答えて

1

ケース - ケース継承を使用することは禁じられています。私は、それがあなたの主な問題になることができると思う、それを避けてみてください。この時

ルック:ケースクラスの継承について

scala> case class A(b: String) 
defined class A 

scala> case class B(b: String) extends A(b) 
<console>:13: error: case class B has case ancestor A, but case-to-case inheritance is prohibited. To overcome this limitation, use extractors to pattern match on non-leaf nodes. 
     case class B(b: String) extends A(b) 

便利なリンク: Scala case class inheritance What is *so* wrong with case class inheritance?

関連する問題