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

Scala example source code file (checksensible.scala)

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

any, anyref, anyref, array, bop, bop, c2, c3, int, object, shmoopie, shmoopie, z1, z1

The Scala checksensible.scala source code

final class Bip { def <=(other: Bop) = true }
final class Bop { }
object Bep { }

final class Zing {
  def !=(other: Zing) = false
}

// 7 warnings
class RefEqTest {
  object Shmoopie
  
  (new AnyRef) eq (new AnyRef)
  (new AnyRef) ne (new AnyRef)
  Shmoopie eq (new AnyRef)
  (Shmoopie: AnyRef) eq (new AnyRef)
  (new AnyRef) eq Shmoopie
  (new AnyRef) eq null
  null eq new AnyRef
}

// 11 warnings
class EqEqValTest {
  var c = 0
  
  (c = 1) == 0
  0 == (c = 1)
  
  1 == "abc"
  1 == ("abc": Any) // doesn't warn because an Any may be a boxed Int
  1 == (1: Any)     // as above
  "abc" == 1        // doesn't generally warn since String defines an equals method, but can chatty warn
  
  new AnyRef == 1
  1 == new AnyRef                 // doesn't warn because it could be...
  1 == (new java.lang.Integer(1)) // ...something like this
  1 == (new java.lang.Boolean(true))
  
  1 != true
  () == true
  () == ()
  () == println
  
  (1 != println)
  (1 != 'sym)
}

// 12 warnings
class EqEqRefTest {  
  val ref = new Bop
  ((x: Int) => x + 1) == null
  Bep == ((_: Int) + 1)

  new Object == new Object
  new Object == "abc"
  new Exception() != new Exception()

  val foo: Array[String] = Array("1","2","3")
  if (foo.length == null) "plante" else "plante pas"

  // final classes with default equals
  val x1 = new Bip
  val x2 = new Bop  
  (x1 == x2)
  
  class C1 { }
  class C2 extends C1 { }
  final class Z1 extends C2 { }
  final class C3 extends C2 { def !=(other: Z1) = false }
  val z1 = new Z1
  val c3 = new C3

  // these should always warn
  c3 == z1
  z1 == c3
  z1 != c3
  c3 != "abc"
  // this should warn when feeling chatty
  c3 != z1
  
  // non-warners
  (null: AnyRef) == (null: AnyRef)
  (x1 <= x2)
  
  def main(args: Array[String]) = {
    val in = new java.io.FileInputStream(args(0))
    var c = 0    
    while ((c = in.read) != -1)
      print(c.toChar)

    in.close
  }
}

Other Scala examples (source code examples)

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