diff options
| author | Steven Knight <knight@baldmt.com> | 2008-12-11 05:37:35 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2008-12-11 05:37:35 (GMT) |
| commit | dc9330eb6885bf75b25953ec9b9bcef78054eab4 (patch) | |
| tree | bd97fc1cfe788c0328ac7b83b415b94de5aa52e8 /src/engine | |
| parent | a7565584cb59a3bd03d82b27c817ad64ae364922 (diff) | |
| download | SCons-dc9330eb6885bf75b25953ec9b9bcef78054eab4.zip SCons-dc9330eb6885bf75b25953ec9b9bcef78054eab4.tar.gz SCons-dc9330eb6885bf75b25953ec9b9bcef78054eab4.tar.bz2 | |
Issue 2231: Add a --warn=future-deprecated option, along with
FutureDeprecatedWarning and MandatoryDeprecatedWarning subclasses.
Use these to future-deprecate the Taskmaster.Task class, which we intend
to turn into an abstract base class by requiring subclasses to implement
the .needs_execute() method.
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/SCons/Taskmaster.py | 4 | ||||
| -rw-r--r-- | src/engine/SCons/Warnings.py | 24 | ||||
| -rw-r--r-- | src/engine/SCons/WarningsTests.py | 4 |
3 files changed, 29 insertions, 3 deletions
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py index f360402..934e28b 100644 --- a/src/engine/SCons/Taskmaster.py +++ b/src/engine/SCons/Taskmaster.py @@ -58,6 +58,7 @@ import traceback import SCons.Errors import SCons.Node +import SCons.Warnings StateString = SCons.Node.StateString NODE_NO_STATE = SCons.Node.no_state @@ -202,6 +203,9 @@ class Task: # Deprecation Cycle) so the desired behavior is explicitly # determined by which concrete subclass is used. #raise NotImplementedError + msg = ('Direct use of the Taskmaster.Task class will be deprecated\n' + + '\tin a future release.') + SCons.Warnings.warn(SCons.Warnings.TaskmasterNeedsExecuteWarning, msg) return True def execute(self): diff --git a/src/engine/SCons/Warnings.py b/src/engine/SCons/Warnings.py index 03ab9ae..83e3ccb 100644 --- a/src/engine/SCons/Warnings.py +++ b/src/engine/SCons/Warnings.py @@ -37,6 +37,21 @@ import SCons.Errors class Warning(SCons.Errors.UserError): pass +class MandatoryWarning(Warning): + pass + + + +class FutureDeprecatedWarning(Warning): + pass + +class DeprecatedWarning(Warning): + pass + +class MandatoryDeprecatedWarning(MandatoryWarning): + pass + + # NOTE: If you add a new warning class, add it to the man page, too! @@ -49,9 +64,6 @@ class CorruptSConsignWarning(Warning): class DependencyWarning(Warning): pass -class DeprecatedWarning(Warning): - pass - class DeprecatedCopyWarning(DeprecatedWarning): pass @@ -97,6 +109,9 @@ class ReservedVariableWarning(Warning): class StackSizeWarning(Warning): pass +class TaskmasterNeedsExecuteWarning(FutureDeprecatedWarning): + pass + class FortranCxxMixWarning(LinkWarning): pass @@ -186,5 +201,8 @@ def process_warn_strings(arguments): else: if enable: enableWarningClass(clazz) + elif issubclass(clazz, MandatoryDeprecatedWarning): + fmt = "Can not disable mandataory warning: '%s'\n" + sys.stderr.write(fmt % arg) else: suppressWarningClass(clazz) diff --git a/src/engine/SCons/WarningsTests.py b/src/engine/SCons/WarningsTests.py index 0964699..228c82c 100644 --- a/src/engine/SCons/WarningsTests.py +++ b/src/engine/SCons/WarningsTests.py @@ -94,6 +94,10 @@ class WarningsTestCase(unittest.TestCase): "Foo") assert to.out is None, to.out + SCons.Warnings.warn(SCons.Warnings.MandatoryWarning, + "Foo") + assert to.out is None, to.out + SCons.Warnings.enableWarningClass(SCons.Warnings.Warning) SCons.Warnings.warn(SCons.Warnings.DeprecatedWarning, "Foo") |
