50

I'm using IntelliJ IDEA with the Scala plugin. If I reference HashMap in code, and then use Alt-Enter to add the import, the package gets imported as:

_root_.scala.collection.immutable.HashMap

What's the root part of this? It seems to work with and without it.

Alex B
  • 24,678
  • 14
  • 64
  • 87
Landon Kuhn
  • 76,451
  • 45
  • 104
  • 130

3 Answers3

51

It has to do scala imports being relative - _root_ gives you a way to specify an absolute package name. See the Scala Wiki

Josh Rosen
  • 13,511
  • 6
  • 58
  • 70
Kevin Hakanson
  • 41,386
  • 23
  • 126
  • 155
8

The Scala language specification has this to say about _root_ in section 9.4 Package References

The special predefined name _root_ refers to the outermost root package which contains all top-level packages.

See the following PDF for the full language reference: http://www.scala-lang.org/docu/files/ScalaReference.pdf

Alan LaMielle
  • 401
  • 4
  • 12
7

You would only need it if inside your current package you had a nested package scala.collection.immutable containing HashMap. This would be preferred by a relative import without the _root_ part.

Edit: That was not quite right, the problems start already if you have a scala package either as an ancestor or nested in the current package.

starblue
  • 55,348
  • 14
  • 97
  • 151