#IFSAME !1 !2 #IFDEF !3 // if a variable, constant or expression...it's defined OBJECT$SEND$DEFINE !3 #ELSE // remove .obj resolution. must manually add this //#IFDEF !3.OBJ // old style: If global object or defined w/ .obj (ugh) // OBJECT$SEND$DEFINE !3.OBJ //#ELSE #IFDEF GET_!3 // if defined as a function #IF (GET_!3>$40000000) // and an object access method // replace simple name with expression syntax OBJECT$SEND$DEFINE (!3(Current_object)) #ELSE // if defined as a function but not an access method. This is an error #ERROR DFERR_COMP_INVALID_OBJECT_REFERENCE "Already defined as a function" #ENDIF #ELSE // 12.0 change: // !3 is not defined but we will pass this on and allow the compiler to attempt to resolve it OBJECT$SEND$DEFINE (!3(Current_object)) //// not yet defined. We could either forward ref as object or //// declare an error. For now let's just do an error. //#ERROR DFERR_COMP_INVALID_OBJECT_REFERENCE Object .Not. yet defined //// here is how we would forward ref as obj ////!A [] OBJ$SEND |CI0 |VL ////#FREF (!3(Current_object)) !a #ENDIF //#ENDIF #ENDIF #ELSE !A [] OBJ$SEND CURRENT_OBJECT |VL #ENDIF