summaryrefslogtreecommitdiff
path: root/trunk/TAO/TAO_IDL/include/utl_err.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/TAO_IDL/include/utl_err.h')
-rw-r--r--trunk/TAO/TAO_IDL/include/utl_err.h348
1 files changed, 348 insertions, 0 deletions
diff --git a/trunk/TAO/TAO_IDL/include/utl_err.h b/trunk/TAO/TAO_IDL/include/utl_err.h
new file mode 100644
index 00000000000..f1b717bda81
--- /dev/null
+++ b/trunk/TAO/TAO_IDL/include/utl_err.h
@@ -0,0 +1,348 @@
+// $Id$
+
+/*
+
+COPYRIGHT
+
+Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United
+States of America. All Rights Reserved.
+
+This product is protected by copyright and distributed under the following
+license restricting its use.
+
+The Interface Definition Language Compiler Front End (CFE) is made
+available for your use provided that you include this license and copyright
+notice on all media and documentation and the software program in which
+this product is incorporated in whole or part. You may copy and extend
+functionality (but may not remove functionality) of the Interface
+Definition Language CFE without charge, but you are not authorized to
+license or distribute it to anyone else except as part of a product or
+program developed by you or with the express written consent of Sun
+Microsystems, Inc. ("Sun").
+
+The names of Sun Microsystems, Inc. and any of its subsidiaries or
+affiliates may not be used in advertising or publicity pertaining to
+distribution of Interface Definition Language CFE as permitted herein.
+
+This license is effective until terminated by Sun for failure to comply
+with this license. Upon termination, you shall destroy or return all code
+and documentation for the Interface Definition Language CFE.
+
+INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF
+ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS
+FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF
+DEALING, USAGE OR TRADE PRACTICE.
+
+INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT
+ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES
+TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT.
+
+SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH
+RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY
+INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF.
+
+IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR
+ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL
+DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+Use, duplication, or disclosure by the government is subject to
+restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
+Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR
+52.227-19.
+
+Sun, Sun Microsystems and the Sun logo are trademarks or registered
+trademarks of Sun Microsystems, Inc.
+
+SunSoft, Inc.
+2550 Garcia Avenue
+Mountain View, California 94043
+
+NOTE:
+
+SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are
+trademarks or registered trademarks of Sun Microsystems, Inc.
+
+ */
+
+#ifndef _UTL_ERR_UTL_ERR_HH
+#define _UTL_ERR_UTL_ERR_HH
+
+#include "ast_expression.h"
+#include "idl_global.h"
+#include "utl_scoped_name.h"
+
+class AST_Decl;
+class AST_Interface;
+class AST_Enum;
+class AST_Union;
+class AST_UnionLabel;
+class UTL_String;
+
+class TAO_IDL_FE_Export UTL_Error
+{
+public:
+ enum ErrorCode {
+ EIDL_SYNTAX_ERROR, // Syntax error in IDL input
+ // More details will be gleaned from examining
+ // idl_global->parse_state()
+ EIDL_REDEF, // Redefinition
+ EIDL_REDEF_SCOPE, // Redefinition inside defining scope
+ EIDL_DEF_USE, // Definition after use
+ EIDL_MULTIPLE_BRANCH, // More than one union branch with this label
+ EIDL_COERCION_FAILURE, // Coercion failure
+ EIDL_SCOPE_CONFLICT, // Between fwd declare and full declare
+ EIDL_ONEWAY_CONFLICT, // Between op decl and argument direction
+ EIDL_PREFIX_CONFLICT, // Between prefixes at declaration and use
+ EIDL_ILLEGAL_VERSION, // Bad number in #pragma version statement
+ EIDL_VERSION_RESET, // Can't reset version, even to same number
+ EIDL_ID_RESET, // Tried to set id to a different string
+ EIDL_TYPEID_RESET, // Can't set repo id with 'typeid' twice
+ EIDL_INVALID_TYPEID, // Can't use 'typeid' on this type.
+ EIDL_INVALID_TYPEPREFIX, // Can't use 'typeprefix on this type
+ EIDL_DISC_TYPE, // Illegal discriminator type in union
+ EIDL_LABEL_TYPE, // Mismatch with discriminator type in union
+ EIDL_ILLEGAL_ADD, // Illegal add action
+ EIDL_ILLEGAL_USE, // Illegal type used in expression
+ EIDL_ILLEGAL_RAISES, // Error in "raises" clause
+ EIDL_ILLEGAL_CONTEXT, // Error in "context" clause
+ EIDL_CANT_INHERIT, // Cannot inherit from non-interface
+ EIDL_CANT_SUPPORT, // Cannot support a non-interface
+ EIDL_LOOKUP_ERROR, // Identifier not found
+ EIDL_INHERIT_FWD_ERROR, // Cannot inherit from fwd decl interface
+ EIDL_SUPPORTS_FWD_ERROR, // Cannot support a fwd decl interface
+ EIDL_PRIMARY_KEY_ERROR, // Does not inherit from primaryKeyBase
+ EIDL_CONSTANT_EXPECTED, // We got something else..
+ EIDL_INTERFACE_EXPECTED, // We got something else..
+ EIDL_VALUETYPE_EXPECTED, // We got something else..
+ EIDL_CONCRETE_VT_EXPECTED, // We got something else..
+ EIDL_ABSTRACT_EXPECTED, // We got something else..
+ EIDL_EVENTTYPE_EXPECTED, // We got something else..
+ EIDL_NAME_CASE_ERROR, // Identifier spellings differ only in case
+ EIDL_NAME_CASE_WARNING, // Same as above, but only a warning
+ EIDL_KEYWORD_ERROR, // Case-insensitive clash with IDL keyword
+ EIDL_KEYWORD_WARNING, // Same as above, but only a warning
+ EIDL_ENUM_VAL_EXPECTED, // Expected an enumerator
+ EIDL_ENUM_VAL_NOT_FOUND, // Didnt find an enumerator with that name
+ EIDL_EVAL_ERROR, // Error in evaluating expression
+ EIDL_INCOMPATIBLE_TYPE, // Assign floating pt. to integer or vice versa
+ EIDL_AMBIGUOUS, // Ambiguous name definition
+ EIDL_DECL_NOT_DEFINED, // Forward declared but never defined
+ EIDL_FWD_DECL_LOOKUP, // Tried to lookup in fwd declared intf
+ EIDL_RECURSIVE_TYPE, // Illegal recursive use of type
+ EIDL_NONVOID_ONEWAY, // Non-void return type in oneway operation
+ EIDL_NOT_A_TYPE, // Not a type
+ EIDL_UNDERSCORE, // More than one leading underscore
+ EIDL_EMPTY_MODULE, // Empty modules not allowed in IDL.
+ EIDL_BACK_END, // Back end error
+ EIDL_ILLEGAL_INFIX, // Illegal infix operator in expression
+ EIDL_LOCAL_REMOTE_MISMATCH, // Local type used in remote operation
+ EIDL_IGNORE_IDL3_ERROR, // -Sm option used with component or home decl
+ EIDL_TC_SUPPRESSION_WARNING,// -St option used with exception decl
+ EIDL_ILLEGAL_BOXED_TYPE, // Valuetype not allowed for box value type
+ EIDL_ILLEGAL_PRIMARY_KEY, // Primary key doesn't meet spec constraints
+ EIDL_OK // No error
+ };
+
+ // Operations
+
+ // Report errors with varying numbers of arguments
+ void error0 (ErrorCode e);
+ void error1 (ErrorCode e,
+ AST_Decl *t);
+ void error2 (ErrorCode e,
+ AST_Decl *t1,
+ AST_Decl *t2);
+ void error3 (ErrorCode e,
+ AST_Decl *t1,
+ AST_Decl *t2,
+ AST_Decl *t3);
+
+ // Report warnings with varying numbers of arguments
+ void warning0 (ErrorCode e);
+ void warning1 (ErrorCode e,
+ AST_Decl *t);
+ void warning2 (ErrorCode e,
+ AST_Decl *t1,
+ AST_Decl *t2);
+ void warning3 (ErrorCode e,
+ AST_Decl *t1,
+ AST_Decl *t2,
+ AST_Decl *t3);
+
+ // Report a syntax error in IDL input
+ void syntax_error (IDL_GlobalData::ParseState ps);
+
+ // Report clash of declared and referenced indentifiers
+ void redef_error (char *n,
+ char *t);
+
+ // Report a name being used with different spellings
+ void name_case_error (char *n,
+ char *t);
+
+ // Same as above, but doesn't increment the error count.
+ void name_case_warning (char *n,
+ char *t);
+
+ // Differs from spelling of IDL keyword only by case.
+ void idl_keyword_error (char *n);
+
+ // Same as above, but doesn't increment the error count.
+ void idl_keyword_warning (char *n);
+
+ // Report an unsuccesful coercion attempt
+ void coercion_error (AST_Expression *v,
+ AST_Expression::ExprType t);
+
+ // Report a failed name lookup attempt.
+ void lookup_error (UTL_ScopedName *n);
+
+ // Report an illegal #pragma version.
+ void version_number_error (char *n);
+
+ // Report an illegal #pragma version syntax
+ void version_syntax_error (const char *msg);
+
+ // Repost an attempt to reset the version.
+ void version_reset_error (void);
+
+ // Report an attempt to change the id once set.
+ void id_reset_error (const char *o,
+ const char *n);
+
+ // Report an attempt to use a forward declared interface which
+ // hasn't been defined yet in an inheritance spec
+ void inheritance_fwd_error (UTL_ScopedName *n,
+ AST_Interface *f);
+
+ // Report an attempt to inherit from something other than an interface
+ void inheritance_error (UTL_ScopedName *n,
+ AST_Decl *d);
+
+ // Report an attempt to use a forward declared interface which
+ // hasn't been defined yet in an inheritance spec
+ void supports_fwd_error (UTL_ScopedName *n,
+ AST_Interface *f);
+
+ // Report an attempt to support something other than an interface
+ void supports_error (UTL_ScopedName *n,
+ AST_Decl *d);
+
+ // Report an attempt to have a derived component or home support something.
+ void derived_supports_error (UTL_ScopedName *n);
+
+ // Report an attempt to illegally inherit from an abstract type.
+ void abstract_inheritance_error (UTL_ScopedName *v,
+ UTL_ScopedName *i);
+
+ // Report an attempt to support more then one concrete type.
+ void abstract_support_error (UTL_ScopedName *v,
+ UTL_ScopedName *i);
+
+ // Report a situation where a non-local interface was expected but we got
+ // something else instead. This most likely is a case in a supports
+ // or inheritance list.
+ void unconstrained_interface_expected (UTL_ScopedName *c,
+ UTL_ScopedName *i);
+
+ // A concrete supported interface must inherit from all concrete
+ // interfaces supported by the valuetype's ancestors, and all of
+ // those conrete interfaces' ancestors.
+ void concrete_supported_inheritance_error (UTL_ScopedName *v,
+ UTL_ScopedName *i);
+
+ // Report an error while evaluating an expression (division by zero, etc.)
+ void eval_error (AST_Expression *d);
+
+ // Report incompatible types in constant assignment
+ void incompatible_type_error (AST_Expression *d);
+
+ // Report a situation where a constant was expected but we got
+ // something else instead. This most likely is a case where a union
+ // label did not evaluate to a constant
+ void constant_expected (UTL_ScopedName *n,
+ AST_Decl *d);
+
+ // Report a situation where an interface was expected but we got
+ // something else instead. This most likely is a case in a supports
+ // or inheritance list.
+ void interface_expected (AST_Decl *d);
+
+ // Report a situation where a value type was expected but we got
+ // something else instead. This most likely is a case in a primary
+ // key, emits, publishes or consumes declaration.
+ void valuetype_expected (AST_Decl *d);
+
+ // Report a situation where a concrete value type was expected but we got
+ // something else instead. This most likely is a case where a valuetype
+ // inherits from something other than a concrete valuetype.
+ void concrete_valuetype_expected (AST_Decl *d);
+
+ // Report a situation where an abstract type was expected but we got
+ // something else instead. This is the case in an inheritance
+ // list where a concrete type appears after an abstract type, or
+ // where a valuetype inherits more than one concrete valuetype.
+ void abstract_expected (AST_Decl *d);
+
+ // Report a situation where an event type was expected but we got
+ // something else instead. This is the case in an 'emits', 'publishes',
+ // or 'consumes' declaration in a component and it's not an event type.
+ void eventtype_expected (AST_Decl *d);
+
+ // Report a situation where a valuetype used as a primary key for a
+ // component home does not inherit directly or indirectly from
+ // Components::primaryKeyBase.
+ void primary_key_error (AST_Decl *d);
+
+ // Report a situation where an enumerator was expected but we got
+ // something else instead. This occurs when a union with an enum
+ // discriminator is being parsed and one of the branch labels is
+ // not an enumerator in that enum
+ void enum_val_expected (AST_Union *t,
+ AST_UnionLabel *l);
+
+ // Report a failed enumerator lookup in an enum
+ void enum_val_lookup_failure (AST_Union *t,
+ AST_Enum *e,
+ UTL_ScopedName *n);
+
+ // Report an ambiguous name definition
+ void ambiguous (UTL_Scope *s,
+ AST_Decl *l,
+ AST_Decl *d);
+
+ // Report a forward declared interface which was never defined
+ void fwd_decl_not_defined (AST_Type *d);
+
+ // Report attempt to lookup in forward declared interface
+ void fwd_decl_lookup (AST_Interface *d,
+ UTL_ScopedName *n);
+
+ // Report a redefinition in scope
+ void redefinition_in_scope (AST_Decl *t,
+ AST_Decl *s);
+
+ // Report not a type error
+ void not_a_type (AST_Decl *d);
+
+ // Report back-end error
+ void back_end (long lineno,
+ UTL_String *s);
+
+ // Report illegal infix operator error (they can be used
+ // only with integer, floating point or fixed point expressions.
+ void illegal_infix (void);
+
+ // Report local type used in remote operation.
+ void local_remote_mismatch (AST_Decl *l,
+ UTL_Scope *s);
+
+ // Improper use of -Sm option.
+ void ignore_idl3_error (AST_Decl *d);
+
+ // Valuetype violates a spec-defined constraint on a
+ // valuetype used as a primary key.
+ void illegal_primary_key (AST_Decl *d);
+};
+
+#endif // _UTL_ERR_UTL_ERR_HH