final class Flix075Adapter extends CompilerModel
The one place that knows what Flix's AST looks like.
Why this file is Scala
Flix's AST is a sealed hierarchy, so a match over it is checked. Stock 0.75.3 has 76
Expr constructs; -Xfatal-warnings makes the build name every one an exhaustive match
forgets. The reflective predecessor classified nodes by simple class name and ignored the rest
in silence, which cost exactly what it sounds like: it named a TypeMatchRule that does not
exist and missed the ExtMatchRule that does, so every extensible match was undercounted and
nothing said so.
What it costs
A hard dependency on one Flix AST. This engine links against the release in plugin/lib, and
against a materially different compiler it does not load at all — which
dev.flixw.metrics.sdk.Adapters turns into a sentence rather than a NoSuchMethodError.
For a measurement tool, refusing to run beats a number that is quietly wrong.
- Alphabetic
- By Inheritance
- Flix075Adapter
- CompilerModel
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Flix075Adapter()
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def measure(projectRoot: Path): Model
Measures one project, or throws.
Measures one project, or throws.
- projectRoot
the root flixw resolved; only declarations under it are described, since a typed root also holds the standard library and every dependency
- Definition Classes
- Flix075Adapter → CompilerModel
- Annotations
- @throws(classOf[ModelFailure])
- Exceptions thrown
ModelFailurewhen the project cannot be typed, which is a fact about the project and not about this adapter
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def targets(): String
What this adapter was written against, for a diagnostic rather than for dispatch.
What this adapter was written against, for a diagnostic rather than for dispatch.
Selection is by whether the adapter links, not by comparing this string: a fork reporting an unfamiliar version may still have the AST the adapter needs, and a compiler reporting a familiar one may not.
- Definition Classes
- Flix075Adapter → CompilerModel
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)