diff --git a/lib/oper.g b/lib/oper.g index 25a77420d4..766bebe55c 100644 --- a/lib/oper.g +++ b/lib/oper.g @@ -465,14 +465,17 @@ end ); ## ## <#GAPDoc Label="TraceImmediateMethods"> ## -## +## +## ## ## -## If flag is true, tracing for all immediate methods is turned on. -## If flag is false it is turned off. +## enables tracing for all immediate methods +## if flag is either true, or not present. +## , or +## with flag equal false turns tracing off. ## (There is no facility to trace specific immediate methods.) ## TraceImmediateMethods( true ); +## gap> TraceImmediateMethods( ); ## gap> g:= Group( (1,2,3), (1,2) );; ## #I immediate: Size ## #I immediate: IsCyclic @@ -488,7 +491,7 @@ end ); ## #I immediate: IsPerfectGroup ## #I immediate: IsEmpty ## 6 -## gap> TraceImmediateMethods( false ); +## gap> UntraceImmediateMethods( ); ## gap> UntraceMethods( [ Size ] ); ## ]]> ##

@@ -507,8 +510,21 @@ end ); ## TRACE_IMMEDIATE_METHODS := false; -BIND_GLOBAL( "TraceImmediateMethods", function( flag ) - if flag then +BIND_GLOBAL( "UntraceImmediateMethods", function () + TRACE_IMMEDIATE_METHODS := false; +end ); + +BIND_GLOBAL( "TraceImmediateMethods", function( arg ) + if LENGTH(arg) = 0 then + TRACE_IMMEDIATE_METHODS := true; + return; + fi; + + if LENGTH(arg) > 1 or not IS_BOOL(arg[1]) then + Error("Usage: TraceImmediateMethods( [bool] )"); + fi; + + if arg[1] then TRACE_IMMEDIATE_METHODS := true; else TRACE_IMMEDIATE_METHODS := false; diff --git a/tst/testinstall/trace.tst b/tst/testinstall/trace.tst new file mode 100644 index 0000000000..95edc9523d --- /dev/null +++ b/tst/testinstall/trace.tst @@ -0,0 +1,21 @@ +gap> START_TEST("trace.tst"); +gap> g:= Group( (1,2,3), (1,2) );; +gap> TraceImmediateMethods( ); +gap> g:= Group( (1,2,3), (1,2) );; +#I immediate: Size +#I immediate: IsCyclic +#I immediate: IsCommutative +#I immediate: IsTrivial +gap> UntraceImmediateMethods(); +gap> g:= Group( (1,2,3), (1,2) );; +gap> TraceImmediateMethods( true ); +gap> g:= Group( (1,2,3), (1,2) );; +#I immediate: Size +#I immediate: IsCyclic +#I immediate: IsCommutative +#I immediate: IsTrivial +gap> TraceImmediateMethods( false ); +gap> g:= Group( (1,2,3), (1,2) );; +gap> TraceImmediateMethods( "cheese" ); +Error, Usage: TraceImmediateMethods( [bool] ) +gap> STOP_TEST("trace.tst", 1);