root/trunk/ProjectFortress/other_compiler_tests/FieldAccess.fss

Revision 4128, 1.2 KB (checked in by jmaessen, 3 months ago)

[codegen] Fix two major bugs: first, make sure we name system classes
correctly when constructing jvm-level type descriptors. Second,
distinguish between dotted method calls on trait-typed receivers
(which require INVOKEINTERFACE) from those on object-typed receivers
(which require INVOKEVIRTUAL). This latter requires some tricky
special-case code for builtin types.

Tried to clean up NamingCzar? and CodeGen? a bit along the way, as
messiness in these classes slowed down bug hunting considerably.

Line 
1(*******************************************************************************
2    Copyright 2009 Sun Microsystems, Inc.,
3    4150 Network Circle, Santa Clara, California 95054, U.S.A.
4    All rights reserved.
5
6    U.S. Government Rights - Commercial software.
7    Government users are subject to the Sun Microsystems, Inc. standard
8    license agreement and applicable provisions of the FAR and its supplements.
9
10    Use is subject to license terms.
11
12    This distribution may include materials developed by third parties.
13
14    Sun, Sun Microsystems, the Sun logo and Java are trademarks or registered
15    trademarks of Sun Microsystems, Inc. in the U.S. and other countries.
16 ******************************************************************************)
17
18component FieldAccess
19
20import java com.sun.fortress.nativeHelpers.{simplePrintln.nativePrintln => jPrintln}
21export Executable
22
23trait Z end
24trait T extends Z end
25trait U extends Z end
26trait S extends {T,U} end
27
28object O(a:String) extends S
29  val():String = a
30end;
31
32object Q(b:String, c:String) extends U end;
33
34(* Field ref not yet implemented, sigh. *)
35f(o:O):() = jPrintln(o.a)
36f(o:Z):() = jPrintln("Hi!")
37
38g(x:Z):() = f(x)
39
40run():() = do
41  g(O("Ha!"))
42  g(Q("Hi!", "c"))
43  (* jPrintln("Hi!") *)
44end
45
46end
Note: See TracBrowser for help on using the browser.