alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Scala example source code file (FindTrees.scala)

This example Scala source code file (FindTrees.scala) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Scala tags/keywords

interactivetest, interactivetest, left, left, position, response, response, test, test

The Scala FindTrees.scala source code

import scala.tools.nsc.interactive.tests.InteractiveTest
import scala.tools.nsc.util.Position


/** Example interactive test that does everything by hand. It would be much simpler
 *  to just add the markers in the test file. This test shows how to drive
 *  the presentation compiler manually.
 */
object Test extends InteractiveTest {

  def askForPos(pos: Position) {
    import compiler._
    val response = new Response[Tree]

    println("asking position at %d:%d".format(pos.line, pos.column))
    compiler.askTypeAt(pos, response)
    response.get match {
      case Left(EmptyTree) => 
        println("error retrieving tree at %d:%d".format(pos.line, pos.column))
      case Left(t) =>
        println("retrieved tree: " + t)
    }
  }

  // You can enable settings for the presentation compiler here
  // but don't leave them in the nightly build since the log will most likely
  // contain absolute paths

//  settings.YpresentationDebug.value = true
//  settings.YpresentationVerbose.value = true

  override def runTest {
    import compiler._
    val src = sourceFiles(0) // only one under src/
    val pos = rangePos(src, 426, 426, 433)
    val pos1 = src.position(19, 15)  // this is an offset position

    // reload is issued already by the framework, so we don't need to do it, but it doesn't hurt
    val reload = new Response[Unit]
    compiler.askReload(List(src), reload)
    reload.get // it's important to let reload finish before asking other things.

    // re-enable when positions in the primary constructor are handled reliably
    askForPos(pos) 
    println("=" * 20)
    askForPos(pos1)
    
    compiler.askShutdown()
  }
}

Other Scala examples (source code examples)

Here is a short list of links related to this Scala FindTrees.scala source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.