and screaming into its own file, and now we stick that stuff into its
own little space at the front of what translate returns so that it's
seen by Check Syntax, but we can drop it like a hot potato when it
comes time to run the compiled code.
svn: r340
This fixes up the fact that is-a? should work different for Honu
classes than MzScheme ones (since Honu classes do not automatically
implement the interfaces their superclass did). I also did some
parameterization in the translate module (outside the already
existing current-compile-context).
svn: r330
This makes tenv and lenv, which were arguments to almost everything,
into parameters. The only time they need to be set is after parsing
and before calling anything else, so there's one use in compile/defns
and one use in compile/interaction.
While I was at it, I took a lot of the infrequently-changing
arguments to typecheck-expression and made some typechecker-local
parameters also.
svn: r326
This adds the ability to configure whether to print out just the class
name or class + fields for objects. This also adds the feature of
printing out the type of expressions evaluated at the REPL as well as
their value.
svn: r318
Now null values are printed out as "null" instead of
"#<struct:object:null%>". Simple addition, but useful.
This also adds a very unintelligent pretty printing for classes
by adding a new public member for every Honu generated class that
gets called by format-honu (in tool.ss).
This pretty printing reveals the values for static members.
Eventually I'll want to add an option to print just classes or
classes + fields, like in ProfessorJ, but this was the heavy
lifting of getting classes + fields printing out in the first place.
svn: r312
May have to eventually make my own prefixed version of values to use,
similar to what I did with send (though honu:send does a (Honu) null object
check).
svn: r301
of a supertype and subtype, where the subtype was not yet added to
the tenv. Had to hack to get around that one.
Also little problems like the fact that list can be captured by the
user program, so we can't use that -- used list* (with a null at the
end) and null (for empty lists) instead.
Since the power was down and I couldn't get the earlier stuff committed,
I have even more changes. Bug-fixes, mostly, though now top-level
functions that are defined consecutively are mutually recursive as they
should be.
svn: r300