class CompilerPlugins extends AnyRef
Responsible for disabling unsupported compiler plugins.
Metals only uses the presentation compiler for limited features - completions - hover - parameter hints Compiler plugins that don't affect those features can be disabled, for example WartRemover that only reports diagnostics. Diagnostics are already published from the build, where all compiler plugins are enabled by default.
Some compiler plugins change the semantics of the Scala language. Metals officially only supports a hardcoded list of such compiler plugins: - kind-projector, introduces new syntax for anonymous type lambdas - better-monadic-for, changes for comprehension desugaring The IntelliJ Scala plugin has custom support for these plugins.
Notably, macro-paradise-plugin id disabled because it does not work with the -Ymacro-expand:discard setting making completions always fail when inside an expanded tree.
The process for adding support for other compiler plugins is the following, send a PR to Metals adding integration tests to demonstrate thee compiler plugin - needs to be enabled in order for completions/hover to function. Many plugins like WartRemover that only use the compiler report don't need to be enabled. - enabling the plugin does not break the presentation compiler in unexpected ways.
- Alphabetic
- By Inheritance
- CompilerPlugins
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new CompilerPlugins()
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( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def filterSupportedOptions(options: Seq[String]): Seq[String]
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()