### Eclipse Workspace Patch 1.0 #P goldencode-fwd diff --git src/com/goldencode/p2j/oo/lang/AppError.java src/com/goldencode/p2j/oo/lang/AppError.java index 0c4f367..725aa56 100644 --- src/com/goldencode/p2j/oo/lang/AppError.java +++ src/com/goldencode/p2j/oo/lang/AppError.java @@ -72,7 +72,6 @@ import static com.goldencode.p2j.util.BlockManager.*; import static com.goldencode.p2j.report.ReportConstants.*; -import com.goldencode.p2j.NumberedException; import com.goldencode.p2j.util.*; import com.goldencode.p2j.util.InternalEntry.Type; @@ -146,9 +145,7 @@ integer num = TypeFactory.initInput(_num); internalProcedure(this, "__lang_AppError_constructor__", new Block((Body) () -> { - __lang_ProError_constructor__(); - - addMessage(msg, num); + __lang_ProError_constructor__(msg, num); })); } @@ -262,9 +259,6 @@ @LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_PARTIAL) public void addMessage(character msg, integer num) { - // TODO: validate the index or message? - - int inum = num.isUnknown() ? 0 : num.intValue(); - errors.add(new NumberedException(msg.toStringMessage(), inum)); + super.addMessage(msg, num); } } diff --git src/com/goldencode/p2j/oo/lang/ProError.java src/com/goldencode/p2j/oo/lang/ProError.java index ac158c7..6ec0172 100644 --- src/com/goldencode/p2j/oo/lang/ProError.java +++ src/com/goldencode/p2j/oo/lang/ProError.java @@ -145,6 +145,33 @@ __lang_BaseObject_constructor__(); })); } + + /** + * Explicit method associated with a legacy constructor for the + * Progress.Lang.ProError class. + * + * @param _msg + * The message. + * @param _num + * The message number. + */ + @LegacySignature(type = Type.CONSTRUCTOR, parameters = + { + @LegacyParameter(name = "msg", type = "CHARACTER", mode = "INPUT"), + @LegacyParameter(name = "num", type = "INTEGER", mode = "INPUT"), + }) + @LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_FULL) + protected void __lang_ProError_constructor__(character _msg, integer _num) + { + character msg = TypeFactory.initInput(_msg); + integer num = TypeFactory.initInput(_num); + internalProcedure(this, "__lang_ProError_constructor__", new Block((Body) () -> + { + __lang_ProError_constructor__(); + + addMessage(msg, num); + })); + } /** * Get the number of messages. @@ -272,4 +299,12 @@ return true; } + + protected void addMessage(character msg, integer num) + { + // TODO: validate the index or message? + + int inum = num.isUnknown() ? 0 : num.intValue(); + errors.add(new NumberedException(msg.toStringMessage(), inum)); + } } diff --git src/com/goldencode/p2j/oo/lang/SysError.java src/com/goldencode/p2j/oo/lang/SysError.java index 5406429..9e5157d 100644 --- src/com/goldencode/p2j/oo/lang/SysError.java +++ src/com/goldencode/p2j/oo/lang/SysError.java @@ -68,7 +68,6 @@ import static com.goldencode.p2j.util.BlockManager.externalProcedure; import static com.goldencode.p2j.report.ReportConstants.*; import static com.goldencode.p2j.util.BlockManager.internalProcedure; -import static com.goldencode.p2j.report.ReportConstants.*; import com.goldencode.p2j.util.*; import com.goldencode.p2j.util.InternalEntry.Type; @@ -77,7 +76,7 @@ * Implementation of the Progress.Lang.SysError builtin class. */ @LegacyResource(resource = "Progress.Lang.SysError") -@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_BASIC) +@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_FULL) public class SysError extends ProError { @@ -96,7 +95,7 @@ * Progress.Lang.SysError class. */ @LegacySignature(type = Type.CONSTRUCTOR) - @LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_BASIC) + @LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_FULL) public void __lang_SysError_constructor__() { internalProcedure(this, "__lang_SysError_constructor__", new Block((Body) () -> @@ -104,4 +103,51 @@ __lang_ProError_constructor__(); })); } + + /** + * Explicit method associated with a legacy constructor for the + * Progress.Lang.SysError class. + * + * @param _msg + * The message. + * @param _num + * The message number. + */ + @LegacySignature(type = Type.CONSTRUCTOR, parameters = + { + @LegacyParameter(name = "msg", type = "CHARACTER", mode = "INPUT"), + @LegacyParameter(name = "num", type = "INTEGER", mode = "INPUT"), + }) + @LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_FULL) + public void __lang_SysError_constructor__(character _msg, integer _num) + { + character msg = TypeFactory.initInput(_msg); + integer num = TypeFactory.initInput(_num); + internalProcedure(this, "__lang_SysError_constructor__", new Block((Body) () -> + { + __lang_ProError_constructor__(msg, num); + })); + } + + /** + * Create a new SysError instance and return it as a legacy object. + * + * @param retVal + * The return value. + */ + public static object newInstance(character msg, integer num) + { + return ObjectOps.newInstance(SysError.class, "II", msg, num); + } + + /** + * Create a new SysError instance and return it as a legacy object. + * + * @param retVal + * The return value. + */ + public static object newInstance(String msg, int num) + { + return ObjectOps.newInstance(SysError.class, "II", msg, num); + } } diff --git src/com/goldencode/p2j/util/BlockManager.java src/com/goldencode/p2j/util/BlockManager.java index 5bf383d..6fb8b28 100644 --- src/com/goldencode/p2j/util/BlockManager.java +++ src/com/goldencode/p2j/util/BlockManager.java @@ -6759,10 +6759,12 @@ WorkArea wa = work.get(); - character retVal = ((AppError) error.ref()).getReturnValue(); - if (!retVal.isUnknown() && !retVal.toStringMessage().isEmpty()) - { - wa.cfops.setReturnValue(retVal); + if (error.ref() instanceof AppError) { + character retVal = ((AppError) error.ref()).getReturnValue(); + if (!retVal.isUnknown() && !retVal.toStringMessage().isEmpty()) + { + wa.cfops.setReturnValue(retVal); + } } LegacyErrorException lex = new LegacyErrorException(error, true); diff --git src/com/goldencode/p2j/util/ErrorManager.java src/com/goldencode/p2j/util/ErrorManager.java index 92439e0..0fcea5d 100644 --- src/com/goldencode/p2j/util/ErrorManager.java +++ src/com/goldencode/p2j/util/ErrorManager.java @@ -619,11 +619,11 @@ srv.setPending(true); LegacyError err = lex.getErrorRef(); - if (!(err instanceof AppError && ((AppError) err).isFromReturn())) + if (!(err instanceof AppError) || !((AppError) err).isFromReturn()) { - AppError appErr = (AppError) err; - int errnum = appErr.getMessageNum(new integer(1)).intValue(); - String errmsg = appErr.getMessage(new integer(1)).toStringMessage(); + ProError proErr = (ProError) err; + int errnum = proErr.getMessageNum(new integer(1)).intValue(); + String errmsg = proErr.getMessage(new integer(1)).toStringMessage(); wa.pendingErrorStatus.errorList.add(new ErrorEntry(errnum, errmsg)); addRaisedCondition(new int[] { errnum }); } @@ -1447,7 +1447,8 @@ { // display the error message (because of pause processing, an // endkey, error... even stop condition can be generated here) - displayError(errmsg); + // displayError(errmsg); + BlockManager.returnError(SysError.newInstance(text, num)); } catch (ConditionException err)