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

Scala example source code file (typealias_overriding.scala)

This example Scala source code file (typealias_overriding.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

addremove, addremove, app, linked, linked, linkednode, node, node, nodeimpl, string, test, tnode, tnode

The Scala typealias_overriding.scala source code

// this bug (http://scala-webapps.epfl.ch/bugtracking/bugs/displayItem.do?id=1065)
// was caused by Uncurry not normalizing all the types 
// (more specifically the argument/return types of an anonymous Function)
object Test extends App {
  trait AddRemove {
    type TNode <: NodeImpl;
    trait NodeImpl;
    
    object removing {
      type TNode = AddRemove.this.TNode;
      def printNode(node: TNode, f: TNode => String) = Console.println(f(node))
    }
  }
  
  class Linked extends AddRemove {
    type TNode = Node // can also directly write `class Node extends super.NodeImpl' -- doesn't change the bug
    class Node extends super.NodeImpl { override def toString = "LinkedNode" }
    
    removing.printNode(new Node, (x: removing.TNode) => x.toString) // make inference explicit, doesn't affect the bug
  }

  new Linked
}

Other Scala examples (source code examples)

Here is a short list of links related to this Scala typealias_overriding.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.