Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

False errors when using cats library in IntelliJ

I am using the cats Scala library and the IntelliJ IDE seems to be struggling with the use of implicits:

Here is a simple example:

import cats.std.all._
import cats.Traverse.ops._

def useSequence[A](ls : List[Option[A]]) : Option[List[A]] = {
  ls.sequence
}

In IntelliJ, this code is highlighted red. But I can build just fine using Make Project or the command line.

Right now the error is:

Expression of type Nothing[List[Nothing]] doesn't conform to expected type Option[List[A]]

Other times the error is something like:

value sequence is not a member of List[Option[A]]

Is this a bug in IntelliJ or am I missing some configuration?

I am using IntelliJ 15.0.2 with version 2.0.4 of the Scala plugin.

like image 262
mushroom Avatar asked Jan 09 '16 15:01

mushroom


1 Answers

This is an open issue in IntelliJ/Scala Plugin (SCL-10259 - False error (good code red): sequence from cats) open since May 13, 2016.

As @Noah comments above, the workaround for now is to help IntelliJ out by providing the types of the container and contained types that sequence is applied to, i.e. (updated for cats 1.0):

import cats.instances.all._
import cats.Traverse.ops._

def useSequence[A](ls : List[Option[A]]) : Option[List[A]] = 
  ls.sequence[Option, A]
like image 157
Arne Claassen Avatar answered Oct 25 '22 11:10

Arne Claassen