| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
|
|
|
|
| |
- Added more support for Java slicing.
- Changed config/Make.rules: "make depend" was calling slice2cpp with
ICECPPFLAGS, not SLICE2CPPFLAGS. This meant that "make depend" was
invoking slice2cpp with options that were potentially different from
those passed for normal compilation of slice files, which could lead to
inconsistencies.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
member appeared in the error message instead of the name of the type of
the member.
Changed semantic check for introduced types to be more stringent: it is now
case-insensitive. Previously, we were incorrectly allowing the
following:
sequence<int> IS; struct x {
IS is; };
|
| |
|
|
|
|
|
|
|
|
|
| |
Normal, Nonmutating, and Idempotent operations. Fixed bug introduced
into Freeze with previous changes for saving object state. (State
wasn't saved for idempotent operations.) Retested everything. I'm
getting a failure in the Yellow (C++) tests, and another failure in the
IceBox (Java) tests, but I don't think these are related to these
changes.
|
|
|
|
|
|
| |
tests work now -- the idempotent problem disappeared magically by
itself :-( Possibly, I didn't have everything compiled consistently or
some such :-(
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Changed Slice parser to reject identifiers beginning with "Ice", unless
the --ice option is used. Changed Slice parser to disallow identifiers
that have a trailing "Operations", "Holder", "Helper", "Prx", or "Ptr",
to avoid clashes with language mappings. Fixed tests and remaining code
base to work correctly with the changed rules.
|
|
|
|
| |
operation with local parameters, etc.
|
|
|
|
|
|
|
|
|
| |
compatibility for semicolon syntax for out parameters, removed unused
printError parameters, move error reporting for changes in meaning from
Grammar.y to Parser.cpp, removed one erroneous createClassDecl call
that caused an assertion failure if a non-existent class name was used
in a parameter declaration, improved diagnostics for parameters that
are out of order, fixed tests to match new output.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
That way, we can check whether meaning changes as identifiers are
introduced into parameter declarartions.
Changes were quite extensive because one thing dragged another behind it...
Got rid of some of the pesky parse errors caused by returning zero from
some creation operations. In general, it seems easier to, whenever
possible, to create a dummy instance of something that doesn't quite
parse or doesn't quite get through a semantic check. This avoids
calling YYERROR, which can make a big mess of the scope stack. (I got
stuck on this for quite a long time before I figured out what was going
on.)
Took the opportunity to get rid of the awkward parsing for parameter lists.
We now have only a single parameters non-terminal, which simplifies
things (and also got rid of the one remaining shift/reduce conflict in
the grammar).
Updated all the code generators to work with the new structure for the
syntax tree.
Kept a rather ugly hack in Grammar.y to still permit use of semicolons to
indicate out params. This will go with stable_39, so I don't mind that
it's ugly for now.
|
|
|
|
|
|
|
|
|
| |
change halfway through a scope. This all works now, except for
operations because, currently, parameter lists are not in their own
scope (but they have to be).
Will add that tomorrow. Also want to improve diagnostics to show, if an
identifier changes meaning, where it was introduced with different
meaning.
|
|
|
|
|
|
|
|
|
|
|
| |
and dictionary definitions: the check is now down as a static member
function of the respective types, instead of being inside Contained,
before the type is created.
Ideally, Contained shouldn't be calling new directly. Instead, each type
should provide a static factory operation to create a new instance, and
all the semantic checks should happen inside that factory. I haven't
changed anything along those lines though -- want to talk to Marc
first. This is quite an interesting design problem...
|
|
|
|
|
| |
strings, or sequences and structs that only contain integral types or
strings.
|
| |
|
|
|
|
|
|
|
|
| |
Moved the definitions of Int64, Int64Min, and Int64Max into
IceUtil/Config.h.
Updated scanner and parser to use the new constant names. Also applied
style fixes to parser: INT16MIN -> Int16Min, BYTEMIN -> ByteMin, etc.
Changed Time.h and Time.cpp to use the Int64 type from IceUtil/Config.h.
|
|
|
|
| |
code.
|
|
|
|
|
| |
That was cleaner than polluting the generated files with the macro
definition over and over...
|
|
|
|
| |
ContainedType.
|
|
|
|
|
| |
approach used now (a macro) makes the generated source more readable
than the previous one.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
only.) I couldn't avoid adding a few #ifdefs because of the different
64-bit integer APIs across Linux and Windows. (#including config.h
wasn't an option because that would have created a circular dependency
between Ice and Slice.)
Added sufficient test cases to convince myself that things actually work as
intended.
Will compile under Windows now, so bear with me if things are broken under
Windows for a few minutes...
Some things that aren't quite right yet:
- No support for universal character names (\uxxxx)
- gcc appears to have a preprocessor bug. For example, preprocessing a file
containing a single '@' character just echos that '@' character to the
output. According to the C++ spec, '@' should be translated to its
universal character name (because it isn't part of the basic C++ source
character set).
- Why is the Slice string type mapped to std::string? Given that we are
supposed to support unicode for everything, shouldn't that be mapped to
std::wstring?
Once Windows compiles OK, I'll start on the Java code generation.
|
|
|
|
|
|
|
|
| |
quite correct yet for enums and long long). The other code generators
(java, xsl, etc.) ignore constants for now. Semantic checks are in
place, apart from enums.
Still more work to do -- this is just an intermediate check-in. (About to
test this on Windows too...)
|
|
|
|
|
|
| |
now lives in Parser.cpp because it is used by both the parser and the
scanner.
Applied a few style fixes.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
stable_39, it will be a hard error.
Fixed Marc's review comments about style.
Made many member functions in Parser.cpp const. Still need to look at why
we get problems with IceUtil::dynamicCast if certain member functions
are made const.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
if that name is already defined in one of the base classes/interfaces.
Added checks to disallow ambiguous multiple inheritance. The following (and
many variations thereof) is illegal:
interface A { void op(); };
interface B { long op(string s); };
interface C { void op(); };
interface D1 extends A, B { // Ambiguous multiple inheritance // ... };
interface D2 extends A, C { // Ambiguous multiple inheritance // ... };
Someone checked in a DOS-line ending file for Parser.h and Parser.cpp, so
the CVS up-to-date check failed and the diff obviously produced a lot
of noise. I think I merged everything correctly. There were a few
places where the style had changed, from "if(..." to "if (..." (and
similar for "while(...", and "for(...". The style guide says to use a
space before the parenthesis, so that's how I left things.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|