Ich bekomme diesen Fehler während der Kompilierung. Ich habe keine Ahnung, was diese spezifische Behauptung bedeutet. Ich versuche, eine Basisklasse zu erstellen, und dann zwei Klassen, die es erweitern. Die beiden Klassen sind im Grunde eine Möglichkeit, die Basisklasse einfacher zu verwenden. Mir ist nicht klar, warum die Erweiterung dieses Kompilierungsproblem verursacht.Assertion fehlgeschlagen beim Kompilieren von Scala in IntelliJ
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)
-Code ist:
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) {
}