Don’t reuse platform classloader when ScalaInstallation matches its version
…ersion. Remove the optimization that reused the platform class loader when the desired Scala version matched the one installed in Eclipse. This proved to break due to OSGi restrictions and the implementation of DelegatingReporter in the compiler-interface.jar See #1002175 for details
Disable tab to spaces converter in TextViewer
Don't use Scala reflection for asInstanceOfOpt
asInstanceOfOpt is broken by trying to be too smart. There is no point in using runtime reflection for subtype checks, since the value on which we reflect only carries the erased type anyway. Simplified to use `ClassTag` and documented the behavior. Fixed #1002128, #1002152
And move common code in CompilerUtils
The Scala 2.11 feature for the 2.11 build has a reference to the bundled Scala 2.10 jar. We don't want this reference for the Scala 2.12 build. This will be removed when the need of the bundled Scala 2.10 jar is fixed.
There exists a `TextViewer#setTabsToSpacesConverter` method, which sets a converter each time the Java preference in "Java -> Code Style -> Formatter -> Edit -> Indentation -> Tab policy" is changed. This does not work together with the Scala IDE auto edits, which need to know if a tab was pressed to handle it in the right way.
…debug-1001732 Showing variable values in hovers when in suspended debug mode
In the case that smart indentation is disabled, but the insertion of tabs is enabled, a Java preference was considered. Fixes #1002167
Scala Installations support
mode. The hover shows values when hovering over local variables & class fields. Care has been taken for the hover to never show wrong values upon hover (the automated tests test this), although, I cannot rule-out possible bugs. Some implementation details: * The sdt.core project now exposes a new extension point (scalaHoverDebugOverride) that allows its text hover to be overriden by a plugin. The sdt.debug project provides an extension for this extension point. * The main logic of this commit is implemented in the StackFrameVariableOfTreeFinder.find() method. This method takes an ast node (compiler.Tree) as input and (if possible) returns the IVariable from the stack frame that corresponds to the given ast node. * Once an IVariable is sucessfully found, it is fed to the presentation component that is used internally by the jdt, which presents complex objects in a tree with collapsible sub-trees. Whenever an IVariable is not found, the existing implementation of text hover (the one before this commit) is used. * Some hacks are employed in the implementation (e.g. looking for stack-frame variables that are named '$this' or '$outer'). * The ScalaDebugger class now also keeps track of the currently selected stack frame. * A test case exercises the StackFrameVariableOfTreeFinder.find() function.
Finish cleanup of removed extraction refactorings
This cleanup should already have happened in 1eb07fe, but some entries were forgotten. This led to exceptions on startup of the IDE.
Only favor saved Classpath Container when it conforms to freshest desired source level resolution
Make classpath container serialization work per-path.
… available save Better portability of Scala projects Side-effect: modularizing container computation.
Plugs in a list for Add Scala Library/Compiler Fixes #1001777
Restore Run Selection In Interpreter functionality
This functionality was accidentally removed in ae7f8dc, it works now again. Instead of the old action API, the new handler API is now used. The command id has changed as well - the `MigrationPreferenceInitializer` takes care of it. Fixes #1002164
Integrate new extraction refactorings
Highlight dynamic calls with type parameters