summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2008-12-11 05:37:35 (GMT)
committerSteven Knight <knight@baldmt.com>2008-12-11 05:37:35 (GMT)
commitdc9330eb6885bf75b25953ec9b9bcef78054eab4 (patch)
treebd97fc1cfe788c0328ac7b83b415b94de5aa52e8 /src/engine
parenta7565584cb59a3bd03d82b27c817ad64ae364922 (diff)
downloadSCons-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.py4
-rw-r--r--src/engine/SCons/Warnings.py24
-rw-r--r--src/engine/SCons/WarningsTests.py4
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")