summaryrefslogtreecommitdiff
path: root/test/files/neg/doubledefs.scala
blob: 7c4a3d64d82dc44719099836573cf09d5f858f9e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
//############################################################################
// Double Definitions
//############################################################################
// $Id$

//############################################################################
// Packages followed by objects/classes with same name

package    tic { class  Test1;   }
package    tic { object module1; }
package    tic { class  Test2;   }
// error: object tic would hide package tic
object     tic { def    fun = 0; }
package    tic { class  Test3;   }
package    tic { object module2; }
package    tic { class  Test4;   }
// error: tic.fun does not exist
object Testtic { tic.module1; tic.module2; tic.fun; }

package    tac { class Test1;    }
package    tac { object module1; }
package    tac { class Test2;    }
// error: case class tac (its factory method) would hide package tac
case class tac { def   fun = 0;  }
package    tac { class Test3;    }
package    tac { object module2; }
package    tac { class Test4;    }
// error: tac().fun does not exits
object Testtac { tac.module1; tac.module2; tac().fun; (new tac).fun; }

package    toc { class  Test1;   }
package    toc { object module1; }
package    toc { class  Test2;   }
class toc      { def    fun = 0; }
package    toc { class  Test3;   }
package    toc { object module2; }
package    toc { class  Test4;   }
object Testtoc { toc.module1; toc.module2; (new toc).fun; }

//############################################################################
// Objects/Classes followed by packages with same name

object     mic { def    fun = 0; }
// error: package mic would hide object mic
package    mic { object module;  }
// error: mic.module does not exist
object Testmic { mic.module; mic.fun; }

case class mac { def   fun = 0;  }
// error: package mac would hide case class mac (its factory method)
package    mac { object module;  }
// error: mac.module does not exist
object Testmac { mac.module; mac().fun; (new mac).fun; }

class moc      { def    fun = 0; }
package    moc { object module;  }
object Testmoc { moc.module; (new moc).fun; }

//############################################################################
// Objects followed by Objects/Classes with same name

object     bic { def fun1 = 0; }
// error: object bic redefines object bic
object     bic { def fun2 = 0; }
// error: bic.fun1 does not exist
object Testbic { bic.fun1; bic.fun2; }

object     bac { def fun1 = 0; }
// error: case class bac (its factory method) replaces object bac
case class bac { def fun2 = 0; }
// error: bac.fun1 does not exist
object Testbac { bac.fun1; bac().fun2; (new bac).fun2; }

object     boc { def fun1 = 0; }
class      boc { def fun2 = 0; }
object Testboc { boc.fun1; (new boc).fun2; }

//############################################################################
// Case classes followed by Objects/Classes with same name

case class cic { def fun1 = 0; }
// error: object cic replaces case class cic (its factory method)
object     cic { def fun2 = 0; }
// error: cic().fun1 does not exist
object Testcic { cic().fun1; (new cic).fun1; cic.fun2; }

case class cac { def fun1 = 0; }
// error: case class cac redefines case class cac
case class cac { def fun2 = 0; }
// error: cac().fun1 does not exist
// error: (new cac).fun1 does not exist
object Testcac { cac().fun1; (new cac).fun1; cac().fun2; (new cac).fun2; }

case class coc { def fun1 = 0; }
// error: class coc redefines case class coc
class      coc { def fun2 = 0; }
// error: (new coc).fun1 does not exist
object Testcoc { coc().fun1; (new coc).fun1; (new coc).fun2; }

//############################################################################
// Classes followed by Objects/Classes with same name

class      dic { def fun1 = 0; }
object     dic { def fun2 = 0; }
object Testdic { (new dic).fun1; dic.fun2; }

class      dac { def fun1 = 0; }
// error: case class dac redefines class dac
case class dac { def fun2 = 0; }
// error: (new dac).fun1 does not exist
object Testdac { (new dac).fun1; dac().fun2; (new dac).fun2; }

class      doc { def fun1 = 0; }
// error: class doc redefines class doc
class      doc { def fun2 = 0; }
// error: (new doc).fun1 does not exist
object Testdoc { (new doc).fun1; (new doc).fun2; }

//############################################################################