Migration Guide


AbtNormalGraphic constant used in nonvisual parts

In Version 3.0, for applications containing nonvisual parts that referenced the AbtNormalGraphic constant in AbtConstants, the AbtConstants pool dictionary was inherited from AbtPart. The class hierarchy was as follows:
AbtPart
...
AbtCompositePart
...
AbtAppBldrPart
...
MyNonVisualPart

In Version 4.0, that constant moved from AbtConstants in AbtPart. The constant is now in the AbtCWAdditionsConstants dictionary. That dictionary is in the hierarchy of AbtAppBldrVisual but not AbtAppBldrNonVisual. So, if you have a nonvisual part that references this constant, when you try to load this class you will receive a compiler error in the Transcript similar to the following:

compiler error "undefined"
--> AbtNormalGraphic
Error: 357  Cannot complete the load because CustomerNonVisualPart>>#methodName
(3/26/97 10:35:09 AM) does not compile.
NOTE: If you reload after executing: EmImageBuilder cancelIfMethodsDoNotCompile: false 
methods which do not compile will be deleted.

You have several options at this point.

  1. If you only use this constant in a method or two, you can execute the code in the Transcript:
    EmImageBuilder cancelIfMethodsDoNotCompile: false
    

    Then, reload. After you have reloaded, you will need to add an entry in the class definition of your nonvisual class for the pool dictionary AbtCWAdditionsConstants. Once this is done, you will need to reload the class again or reload the methods that reference this constant.

  2. If you use this constant alot, you can change your Version 3.0 classes so they declare an empty pool dictionary entry in the Smalltalk dictionary for AbtCWAdditionsConstants, which you can then put in the class definition for your nonvisual parts that reference this constant. Make sure to version and release your changed work while using a Version 3.0. image. This will allow you to load cleanly into a Version 5.5 image.


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]