Landon Kuhn
Landon Kuhn

Reputation: 78491

What is the _root_ package in Scala?

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.

Upvotes: 50

Views: 14897

Answers (3)

Kevin Hakanson
Kevin Hakanson

Reputation: 42240

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

Upvotes: 51

Alan LaMielle
Alan LaMielle

Reputation: 411

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

Upvotes: 8

starblue
starblue

Reputation: 56822

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.

Upvotes: 7

Related Questions