Packages

c

scala.meta.internal.metals

CompilerPlugins

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 diagnosticsForDebuggingPurposes. 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.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. CompilerPlugins
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new CompilerPlugins()

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def filterSupportedOptions(options: Seq[String]): Seq[String]
  9. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  17. def toString(): String
    Definition Classes
    AnyRef → Any
  18. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped