Class
pushSubtypeCheckDepth!
5455712!
Unclassified!
0! !
popDefinition!
5453692!
Unclassified!
0! !
catchErrorsFor:!
5452470!
Unclassified!
2[^X def]:X! !
#group!
ast! !
reportSubtypingError:at:toEscape:!
5456584!
Unclassified!
0DeltaTypeError:DeltaASTNode:[]:! !
popSubtypeCheckDepth!
5454290!
Unclassified!
0! !
subtypeStack!
5458306!
Unclassified!
0DeltaTypeErrorHandlerStack! !
reportedErrors!
5457329!
Unclassified!
0Cltn[DeltaTypeError]! !
pushClassSideDefinitions!
5454571!
Unclassified!
0! !
#categories!
Unclassified! !
pushSelector:!
5455487!
Unclassified!
0Symbol:! !
#comment!
Type error handlers manage the process of reporting type errors .
One error handler is used throughout a particular typecheck.
As typechecking proceeds,  type information from different definitions is
checked and used. The typechecker informs the current type error handler
what definition(s) are being evaluated at any time. 

Errors get reported to the current handler as well. When an error is reported
the handler determines the location of the error, and produces a locator,
which it gives to the error so it can display itself later.

Subtyping errors involve a comparison among two types. The handler maintains two
stacks that keep track of the definitions involved in subtyping - one for the presumed 
subtype, and one for the presumed supertype.





 (c) 1995-1997 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 
Use and distribution of this software is subject to the terms of the attached source license.! !
subtypeStack:!
5458493!
Unclassified!
0DeltaTypeErrorHandlerStack:! !
supertypeStack:!
5459088!
Unclassified!
0DeltaTypeErrorHandlerStack:! !
subtypeLocFor:!
5458100!
Unclassified!
0DeltaASTNode:DeltaLocator! !
#extensionsAreSubtypes!
true! !
clearErrors!
5452777!
Unclassified!
0! !
#branded!
true! !
pushDefinition:!
5454930!
Unclassified!
0Decl|Type:! !
supertypeStack!
5458897!
Unclassified!
0DeltaTypeErrorHandlerStack! !
reportSubtypingErrors:!
5457146!
Unclassified!
0Boolean:! !
subtypeCheckDepth:!
5457920!
Unclassified!
0Int:! !
#superclassTypeString!
Object! !
popDefinitions!
5453893!
Unclassified!
0! !
pushDefinitions:and:!
5455190!
Unclassified!
0Decl|Type:Decl|Type:! !
#revision!
$Revision: 1.3 $! !
#classVariableString!
Current ! !
popSelector!
5454095!
Unclassified!
0! !
#instanceVariableString!
subtypeStack supertypeStack errors reportMultipleErrors reportSubtypingErrors subtypeCheckDepth ! !
initialize!
5453459!
Unclassified!
0! !
#subtype!
true! !
reportMultipleErrors:!
5456403!
Unclassified!
0Boolean:! !
reportMultipleErrors!
5456227!
Unclassified!
0Boolean! !
reportedErrorsFor:!
5457502!
Unclassified!
0DeltaLocator:Cltn[DeltaTypeError]! !
#abstract!
false! !
supertypeLocFor:!
5458686!
Unclassified!
0DeltaASTNode:DeltaLocator! !
reportError:at:!
5455903!
Unclassified!
0DeltaTypeError:DeltaASTNode:! !
errors:!
5453281!
Unclassified!
0Cltn[DeltaTypeError]:! !
errors!
5453111!
Unclassified!
0Cltn[DeltaTypeError]! !
reportSubtypingErrors!
5456968!
Unclassified!
0Boolean! !
subtypeCheckDepth!
5457745!
Unclassified!
0Int! !
