diff --git a/lib/coll.gd b/lib/coll.gd index 6684ff6235..238f291a54 100644 --- a/lib/coll.gd +++ b/lib/coll.gd @@ -342,18 +342,22 @@ BIND_GLOBAL( "DeclareSynonym", function( name, value ) INFO_DEBUG( 1, "multiple declarations for synonym `", name, "'\n" ); fi; else + ADD_LIST(BIND_LOCS, [name, CURRENT_LOCATION()]); BIND_GLOBAL( name, value ); fi; end ); BIND_GLOBAL( "DeclareSynonymAttr", function( name, value ) local nname; + ADD_LIST(BIND_LOCS, [name, CURRENT_LOCATION()]); DeclareSynonym( name, value ); nname:= "Set"; APPEND_LIST_INTR( nname, name ); + ADD_LIST(BIND_LOCS, [nname, CURRENT_LOCATION()]); DeclareSynonym( nname, Setter( value ) ); nname:= "Has"; APPEND_LIST_INTR( nname, name ); + ADD_LIST(BIND_LOCS, [nname, CURRENT_LOCATION()]); DeclareSynonym( nname, Tester( value ) ); end ); diff --git a/lib/filter.g b/lib/filter.g index d5773d7d90..c7d688963d 100644 --- a/lib/filter.g +++ b/lib/filter.g @@ -31,7 +31,7 @@ CLEAR_IMP_CACHE := fail; ## filter with number resp. its rank. ## BIND_GLOBAL( "FILTERS", [] ); - +BIND_GLOBAL( "FILTERS_LOCATIONS", [] ); ############################################################################# ## @@ -234,6 +234,7 @@ BIND_GLOBAL( "NewFilter", function( arg ) # Do some administrational work. FILTERS[ FLAG1_FILTER( filter ) ] := filter; + FILTERS_LOCATIONS[ FLAG1_FILTER( filter ) ] := CURRENT_LOCATION(); IMM_FLAGS:= AND_FLAGS( IMM_FLAGS, FLAGS_FILTER( filter ) ); RANK_FILTERS[ FLAG1_FILTER( filter ) ] := rank; INFO_FILTERS[ FLAG1_FILTER( filter ) ] := 0; diff --git a/lib/function.g b/lib/function.g index 2a966650b4..e78386ee4c 100644 --- a/lib/function.g +++ b/lib/function.g @@ -638,7 +638,7 @@ end); BIND_GLOBAL( "VIEW_STRING_OPERATION", function ( op ) local class, flags, types, catok, repok, propok, seenprop, - t, res; + t, flafs, res; class := "Operation"; if IS_IDENTICAL_OBJ(op,IS_OBJECT) then class := "Filter"; @@ -646,12 +646,9 @@ BIND_GLOBAL( "VIEW_STRING_OPERATION", function ( op ) class := "Constructor"; elif IsFilter(op) then class := "Filter"; - flags := FLAGS_FILTER(op); - if flags <> false then - flags := TRUES_FLAGS(flags); - else - flags := []; - fi; + flafs := FLAGS_FILTER(op); + if flafs <> false then + flags := TRUES_FLAGS(FLAGS_FILTER(op)); types := INFO_FILTERS{flags}; catok := true; repok := true; @@ -678,6 +675,7 @@ BIND_GLOBAL( "VIEW_STRING_OPERATION", function ( op ) elif repok then class := "Representation"; fi; + fi; elif Tester(op) <> false then # op is an attribute class := "Attribute"; diff --git a/lib/global.gi b/lib/global.gi index 580b5bd8bb..d77227d685 100644 --- a/lib/global.gi +++ b/lib/global.gi @@ -217,6 +217,7 @@ InstallGlobalFunction( BindGlobal, function (name, value) CheckGlobalName( name ); Info( InfoGlobal, 2, "BindGlobal: called to set ", name, " to ", value); + ADD_LIST( BIND_LOCS, [ name, CURRENT_LOCATION() ] ); BIND_GLOBAL( name, value ); end); diff --git a/lib/oper.g b/lib/oper.g index c6fa47f786..f3822987da 100644 --- a/lib/oper.g +++ b/lib/oper.g @@ -148,7 +148,14 @@ BIND_GLOBAL( "NUMBERS_PROPERTY_GETTERS", [] ); ## ## BIND_GLOBAL( "OPERATIONS", [] ); - +BIND_GLOBAL( "OPERATIONS_LOCATIONS", []); +BIND_GLOBAL( "ADD_OPERATION", +function(oper, filt) + ADD_LIST(OPERATIONS, oper); + ADD_LIST(OPERATIONS, filt); + OPERATIONS_LOCATIONS[LENGTH(OPERATIONS)] := + [ CURRENT_LOCATION() ]; +end); ############################################################################# ## @@ -567,8 +574,7 @@ BIND_GLOBAL( "NewOperation", function ( name, filters ) fi; ADD_LIST( filt, FLAGS_FILTER( filter ) ); od; - ADD_LIST( OPERATIONS, oper ); - ADD_LIST( OPERATIONS, [ filt ] ); + ADD_OPERATION( oper, [ filt ] ); return oper; end ); @@ -694,8 +700,7 @@ BIND_GLOBAL( "NewConstructor", function ( name, filters ) ADD_LIST( filt, FLAGS_FILTER( filter ) ); od; ADD_LIST( CONSTRUCTORS, oper ); - ADD_LIST( OPERATIONS, oper ); - ADD_LIST( OPERATIONS, [ filt ] ); + ADD_OPERATION( oper, [ filt ] ); return oper; end ); @@ -780,6 +785,7 @@ BIND_GLOBAL( "DeclareOperation", function ( name, filters ) fi; else ADD_LIST( OPERATIONS[ pos+1 ], filt ); + ADD_LIST( OPERATIONS_LOCATIONS[ pos + 1 ], CURRENT_LOCATION()); fi; else @@ -824,8 +830,7 @@ BIND_GLOBAL( "DeclareOperationKernel", function ( name, filters, oper ) ADD_LIST( filt, FLAGS_FILTER( filter ) ); od; - ADD_LIST( OPERATIONS, oper ); - ADD_LIST( OPERATIONS, [ filt ] ); + ADD_OPERATION( oper, [ filt ] ); end ); @@ -882,7 +887,7 @@ BIND_GLOBAL( "DeclareConstructor", function ( name, filters ) pos:= POS_LIST_DEFAULT( OPERATIONS, gvar, 0 ); ADD_LIST( OPERATIONS[ pos+1 ], filt ); - + ADD_LIST( OPERATIONS_LOCATIONS[ pos + 1 ], CURRENT_LOCATION() ); else # The operation is new. @@ -926,8 +931,7 @@ BIND_GLOBAL( "DeclareConstructorKernel", function ( name, filters, oper ) od; ADD_LIST( CONSTRUCTORS, oper ); - ADD_LIST( OPERATIONS, oper ); - ADD_LIST( OPERATIONS, [ filt ] ); + ADD_OPERATION( oper, [ filt ] ); end ); @@ -964,7 +968,8 @@ BIND_GLOBAL( "RUN_ATTR_FUNCS", for func in ATTR_FUNCS do func( name, filter, getter, setter, tester, mutflag ); od; - ADD_LIST( ATTRIBUTES, [ name, filter, getter, setter, tester, mutflag ] ); + ADD_LIST( ATTRIBUTES, [ name, filter, getter, setter, tester, mutflag, + CURRENT_LOCATION() ] ); end ); @@ -993,16 +998,13 @@ BIND_GLOBAL( "DeclareAttributeKernel", function ( name, filter, getter ) tester := TESTER_FILTER( getter ); # add getter, setter and tester to the list of operations - ADD_LIST( OPERATIONS, getter ); - ADD_LIST( OPERATIONS, [ [ FLAGS_FILTER(filter) ] ] ); - ADD_LIST( OPERATIONS, setter ); - ADD_LIST( OPERATIONS, - [ [ FLAGS_FILTER( filter ), FLAGS_FILTER( IS_OBJECT ) ] ] ); - ADD_LIST( OPERATIONS, tester ); - ADD_LIST( OPERATIONS, [ [ FLAGS_FILTER(filter) ] ] ); + ADD_OPERATION( getter, [ [ FLAGS_FILTER(filter) ] ] ); + ADD_OPERATION( setter, [ [ FLAGS_FILTER( filter ), FLAGS_FILTER( IS_OBJECT ) ] ] ); + ADD_OPERATION( tester, [ [ FLAGS_FILTER(filter) ] ] ); # store the information about the filter FILTERS[ FLAG2_FILTER( tester ) ] := tester; + FILTERS_LOCATIONS[ FLAG2_FILTER( tester ) ] := CURRENT_LOCATION(); IMM_FLAGS:= AND_FLAGS( IMM_FLAGS, FLAGS_FILTER( tester ) ); INFO_FILTERS[ FLAG2_FILTER( tester ) ] := 5; @@ -1089,13 +1091,12 @@ BIND_GLOBAL( "OPER_SetupAttribute", function(getter, flags, mutflag, filter, ran setter := SETTER_FILTER( getter ); tester := TESTER_FILTER( getter ); - ADD_LIST( OPERATIONS, setter ); - ADD_LIST( OPERATIONS, [ [ flags, FLAGS_FILTER( IS_OBJECT ) ] ] ); - ADD_LIST( OPERATIONS, tester ); - ADD_LIST( OPERATIONS, [ [ flags ] ] ); + ADD_OPERATION( setter, [ [ flags, FLAGS_FILTER( IS_OBJECT ) ] ] ); + ADD_OPERATION( tester, [ [ flags ] ] ); # install the default functions FILTERS[ FLAG2_FILTER( tester ) ] := tester; + FILTERS_LOCATIONS[ FLAG2_FILTER( tester ) ] := CURRENT_LOCATION(); IMM_FLAGS:= AND_FLAGS( IMM_FLAGS, FLAGS_FILTER( tester ) ); # the is newly made, therefore the cache cannot contain a flag @@ -1117,6 +1118,7 @@ BIND_GLOBAL( "OPER_SetupAttribute", function(getter, flags, mutflag, filter, ran BIND_GLOBAL( "NewAttribute", function ( arg ) local name, filter, flags, mutflag, getter, setter, tester, rank; + # Print("Attribute: ", CurrentLocation(), "\n"); # construct getter, setter and tester name := arg[1]; filter := arg[2]; @@ -1140,8 +1142,7 @@ BIND_GLOBAL( "NewAttribute", function ( arg ) else rank := 1; fi; - ADD_LIST(OPERATIONS,getter); - ADD_LIST(OPERATIONS, [ [ flags ] ]); + ADD_OPERATION(getter, [ [ flags ] ] ); OPER_SetupAttribute(getter, flags, mutflag, filter, rank, name); # store the information about the filtera # And return the getter @@ -1316,18 +1317,16 @@ BIND_GLOBAL( "DeclarePropertyKernel", function ( name, filter, getter ) ADD_LIST( NUMBERS_PROPERTY_GETTERS, FLAG1_FILTER( getter ) ); # add getter, setter and tester to the list of operations - ADD_LIST( OPERATIONS, getter ); - ADD_LIST( OPERATIONS, [ [ FLAGS_FILTER(filter) ] ] ); - ADD_LIST( OPERATIONS, setter ); - ADD_LIST( OPERATIONS, - [ [ FLAGS_FILTER( filter ), FLAGS_FILTER( IS_BOOL ) ] ] ); - ADD_LIST( OPERATIONS, tester ); - ADD_LIST( OPERATIONS, [ [ FLAGS_FILTER(filter) ] ] ); + ADD_OPERATION( getter, [ [ FLAGS_FILTER(filter) ] ] ); + ADD_OPERATION( setter, [ [ FLAGS_FILTER( filter ), FLAGS_FILTER( IS_BOOL ) ] ] ); + ADD_OPERATION( tester, [ [ FLAGS_FILTER(filter) ] ] ); # install the default functions FILTERS[ FLAG1_FILTER( getter ) ]:= getter; + FILTERS_LOCATIONS[ FLAG1_FILTER( getter ) ]:= CURRENT_LOCATION(); IMM_FLAGS:= AND_FLAGS( IMM_FLAGS, FLAGS_FILTER( getter ) ); FILTERS[ FLAG2_FILTER( getter ) ]:= tester; + FILTERS_LOCATIONS[ FLAG2_FILTER( getter ) ]:= CURRENT_LOCATION(); INFO_FILTERS[ FLAG1_FILTER( getter ) ]:= 7; INFO_FILTERS[ FLAG2_FILTER( getter ) ]:= 8; @@ -1392,20 +1391,19 @@ BIND_GLOBAL( "NewProperty", function ( arg ) tester := TESTER_FILTER( getter ); # add getter, setter and tester to the list of operations - ADD_LIST( OPERATIONS, getter ); - ADD_LIST( OPERATIONS, [ [ flags ] ] ); - ADD_LIST( OPERATIONS, setter ); - ADD_LIST( OPERATIONS, [ [ flags, FLAGS_FILTER( IS_BOOL ) ] ] ); - ADD_LIST( OPERATIONS, tester ); - ADD_LIST( OPERATIONS, [ [ flags ] ] ); + ADD_OPERATION( getter, [ [ flags ] ] ); + ADD_OPERATION( setter, [ [ flags, FLAGS_FILTER( IS_BOOL ) ] ] ); + ADD_OPERATION( tester, [ [ flags ] ] ); # store the property getters ADD_LIST( NUMBERS_PROPERTY_GETTERS, FLAG1_FILTER( getter ) ); # install the default functions FILTERS[ FLAG1_FILTER( getter ) ] := getter; + FILTERS_LOCATIONS[ FLAG1_FILTER( getter ) ] := CURRENT_LOCATION(); IMM_FLAGS:= AND_FLAGS( IMM_FLAGS, FLAGS_FILTER( getter ) ); FILTERS[ FLAG2_FILTER( getter ) ] := tester; + FILTERS_LOCATIONS[ FLAG2_FILTER( getter ) ] := CURRENT_LOCATION(); INFO_FILTERS[ FLAG1_FILTER( getter ) ] := 9; INFO_FILTERS[ FLAG2_FILTER( getter ) ] := 10; @@ -1760,12 +1758,15 @@ end ); ## mechanism. ## BIND_GLOBAL( "GLOBAL_FUNCTION_NAMES", [] ); +BIND_GLOBAL( "GLOBAL_FUNCTION_DECL_LOCS", [] ); +BIND_GLOBAL( "GLOBAL_FUNCTION_INST_LOCS", [] ); BIND_GLOBAL( "DeclareGlobalFunction", function( arg ) local name; name := arg[1]; ADD_SET( GLOBAL_FUNCTION_NAMES, IMMUTABLE_COPY_OBJ(name) ); + ADD_SET( GLOBAL_FUNCTION_DECL_LOCS, [IMMUTABLE_COPY_OBJ(name), CURRENT_LOCATION()]); BIND_GLOBAL( name, NEW_OPERATION_ARGS( name ) ); end ); @@ -1787,6 +1788,7 @@ BIND_GLOBAL( "InstallGlobalFunction", function( arg ) Error("you cannot install a global function for another global ", "function,\nuse `DeclareSynonym' instead!"); fi; + ADD_SET( GLOBAL_FUNCTION_INST_LOCS, [NAME_FUNC(oper), CURRENT_LOCATION()]); INSTALL_METHOD_ARGS( oper, func ); end ); diff --git a/lib/oper1.g b/lib/oper1.g index 581ae8d317..d23748532b 100644 --- a/lib/oper1.g +++ b/lib/oper1.g @@ -23,6 +23,11 @@ RUN_IMMEDIATE_METHODS_CHECKS := 0; RUN_IMMEDIATE_METHODS_HITS := 0; +# This is a bit of a hack, after all I could try and store this in the methods +# information list, but adding an entry there is dangerous, because everyone +# implicitly assumes the entries to be in groups of 5. +METHOD_LOCATIONS := []; + BIND_GLOBAL( "RunImmediateMethods", function ( obj, flags ) local flagspos, # list of `true' positions in `flags' @@ -227,8 +232,17 @@ BIND_GLOBAL( "INSTALL_METHOD_FLAGS", ": must be a function, `true', or `false'" ); fi; methods[i+(narg+3)] := rank; - methods[i+(narg+4)] := IMMUTABLE_COPY_OBJ(info); + # This is a horrible hack because I don't want to change the length + # of METHODS_OPERATION at the moment + ADD_LIST( METHOD_LOCATIONS, + [ opr, + method, + narg, + flags, + rank, + rec( line := INPUT_LINENUMBER(), file := INPUT_FILENAME() ) ] ); + # flush the cache CHANGED_METHODS_OPERATION( opr, narg ); diff --git a/lib/read1.g b/lib/read1.g index 2a7e54f70d..0329a36e05 100644 --- a/lib/read1.g +++ b/lib/read1.g @@ -4,6 +4,12 @@ #X after this file is read an 'ExportToKernelFinished' is done. ## ReadLib( "hpc/thread1.g" ); +BIND_GLOBAL( "CURRENT_LOCATION", +function() + return rec( line := INPUT_LINENUMBER(), + file := INPUT_FILENAME() ); +end); +BIND_GLOBAL( "BIND_LOCS", [] ); ReadLib( "filter.g" ); ReadLib( "filter1.g" ); ReadLib( "oper.g" ); diff --git a/lib/type.g b/lib/type.g index 7bd117fa22..f24178fbf0 100644 --- a/lib/type.g +++ b/lib/type.g @@ -63,6 +63,7 @@ BIND_GLOBAL( "DeclareCategoryKernel", function ( name, super, cat ) if not IS_IDENTICAL_OBJ( cat, IS_OBJECT ) then ADD_LIST( CATS_AND_REPS, FLAG1_FILTER( cat ) ); FILTERS[ FLAG1_FILTER( cat ) ] := cat; + FILTERS_LOCATIONS[ FLAG1_FILTER( cat ) ] := CURRENT_LOCATION(); IMM_FLAGS:= AND_FLAGS( IMM_FLAGS, FLAGS_FILTER( cat ) ); INFO_FILTERS[ FLAG1_FILTER( cat ) ] := 1; RANK_FILTERS[ FLAG1_FILTER( cat ) ] := 1; @@ -113,6 +114,7 @@ BIND_GLOBAL( "NewCategory", function ( arg ) # Do some administrational work. ADD_LIST( CATS_AND_REPS, FLAG1_FILTER( cat ) ); FILTERS[ FLAG1_FILTER( cat ) ] := cat; + FILTERS_LOCATIONS[ FLAG1_FILTER( cat ) ] := CURRENT_LOCATION(); IMM_FLAGS:= AND_FLAGS( IMM_FLAGS, FLAGS_FILTER( cat ) ); if LEN_LIST( arg ) = 3 and IS_INT( arg[3] ) then @@ -178,6 +180,7 @@ BIND_GLOBAL( "DeclareRepresentationKernel", function ( arg ) fi; ADD_LIST( CATS_AND_REPS, FLAG1_FILTER( rep ) ); FILTERS[ FLAG1_FILTER( rep ) ] := rep; + FILTERS_LOCATIONS[ FLAG1_FILTER( rep ) ] := CURRENT_LOCATION(); IMM_FLAGS:= AND_FLAGS( IMM_FLAGS, FLAGS_FILTER( rep ) ); RANK_FILTERS[ FLAG1_FILTER( rep ) ] := 1; INFO_FILTERS[ FLAG1_FILTER( rep ) ] := 3; @@ -266,6 +269,7 @@ BIND_GLOBAL( "NewRepresentation", function ( arg ) # Do some administrational work. ADD_LIST( CATS_AND_REPS, FLAG1_FILTER( rep ) ); FILTERS[ FLAG1_FILTER( rep ) ] := rep; + FILTERS_LOCATIONS[ FLAG1_FILTER( rep ) ] := CURRENT_LOCATION(); IMM_FLAGS:= AND_FLAGS( IMM_FLAGS, FLAGS_FILTER( rep ) ); RANK_FILTERS[ FLAG1_FILTER( rep ) ] := 1; INFO_FILTERS[ FLAG1_FILTER( rep ) ] := 4; diff --git a/lib/type.gd b/lib/type.gd index bacf9e29b4..ae14fd73c4 100644 --- a/lib/type.gd +++ b/lib/type.gd @@ -37,7 +37,6 @@ DeclareOperation( "FiltersType", [ IsType ] ); DeclareOperation( "FiltersObj", [ IsObject ] ); - ############################################################################# ## #F IsCategory( ) @@ -108,3 +107,21 @@ DeclareGlobalFunction( "IsProperty" ); ## ## <#/GAPDoc> DeclareGlobalFunction( "CategoryByName" ); + + +############################################################################# +## +#F LocationOfDeclaration( ) +## +## Find the location of the declaration of . +## +## <#GAPDoc Label="LocationOfDeclaration"> +## +## +## +## +## returns the location of the declaration of object if it is known. +## +## +## <#/GAPDoc> +DeclareGlobalFunction( "LocationOfDeclaration" ); diff --git a/lib/type.gi b/lib/type.gi index 5b2d71cb0f..e010f6f5c4 100644 --- a/lib/type.gi +++ b/lib/type.gi @@ -197,3 +197,29 @@ function(name) return fail; end); +InstallGlobalFunction( LocationOfDeclaration, +function(object) + local fid; + if IsFilter(object) then + fid := IdOfFilter(object); + if fid <> fail then + if IsBound(FILTERS_LOCATIONS[fid]) then + return FILTERS_LOCATIONS[fid]; + fi; + fi; + fi; + if IsOperation(object) then + fid := Position(OPERATIONS, object); + if fid <> fail then + if IsBound(OPERATIONS_LOCATIONS[fid + 1]) then + return OPERATIONS_LOCATIONS[fid + 1]; + fi; + fi; + fi; + + fid := PositionProperty(BIND_LOCS, x -> x[1] = NAME_FUNC(object)); + if fid <> fail then + return BIND_LOCS[fid][2]; + fi; + return fail; +end); diff --git a/src/c_oper1.c b/src/c_oper1.c index 16048e1625..84ad8bce10 100644 --- a/src/c_oper1.c +++ b/src/c_oper1.c @@ -37,6 +37,10 @@ static GVar G_IMMUTABLE__COPY__OBJ; static Obj GF_IMMUTABLE__COPY__OBJ; static GVar G_IS__IDENTICAL__OBJ; static Obj GF_IS__IDENTICAL__OBJ; +static GVar G_INPUT__FILENAME; +static Obj GF_INPUT__FILENAME; +static GVar G_INPUT__LINENUMBER; +static Obj GF_INPUT__LINENUMBER; static GVar G_IS__OBJECT; static Obj GC_IS__OBJECT; static GVar G_TRY__NEXT__METHOD; @@ -85,6 +89,8 @@ static GVar G_RUN__IMMEDIATE__METHODS__CHECKS; static Obj GC_RUN__IMMEDIATE__METHODS__CHECKS; static GVar G_RUN__IMMEDIATE__METHODS__HITS; static Obj GC_RUN__IMMEDIATE__METHODS__HITS; +static GVar G_METHOD__LOCATIONS; +static Obj GC_METHOD__LOCATIONS; static GVar G_BIND__GLOBAL; static Obj GF_BIND__GLOBAL; static GVar G_IGNORE__IMMEDIATE__METHODS; @@ -151,6 +157,8 @@ static GVar G_CallFuncList; static Obj GF_CallFuncList; /* record names used in handlers */ +static RNam R_line; +static RNam R_file; static RNam R_MaxNrArgsMethod; /* information for the functions */ @@ -1133,6 +1141,39 @@ static Obj HdlrFunc3 ( CHECK_FUNC_RESULT( t_2 ) C_ASS_LIST_FPL( l_methods, t_1, t_2 ) + /* ADD_LIST( METHOD_LOCATIONS, [ opr, method, narg, flags, rank, rec( + line := INPUT_LINENUMBER( ), + file := INPUT_FILENAME( ) ) ] ); */ + t_1 = GF_ADD__LIST; + t_2 = GC_METHOD__LOCATIONS; + CHECK_BOUND( t_2, "METHOD_LOCATIONS" ) + t_3 = NEW_PLIST( T_PLIST, 6 ); + SET_LEN_PLIST( t_3, 6 ); + SET_ELM_PLIST( t_3, 1, a_opr ); + CHANGED_BAG( t_3 ); + SET_ELM_PLIST( t_3, 2, a_method ); + CHANGED_BAG( t_3 ); + SET_ELM_PLIST( t_3, 3, l_narg ); + SET_ELM_PLIST( t_3, 4, a_flags ); + CHANGED_BAG( t_3 ); + SET_ELM_PLIST( t_3, 5, a_rank ); + CHANGED_BAG( t_3 ); + t_4 = NEW_PREC( 2 ); + SET_ELM_PLIST( t_3, 6, t_4 ); + CHANGED_BAG( t_3 ); + t_5 = (Obj)R_line; + t_7 = GF_INPUT__LINENUMBER; + t_6 = CALL_0ARGS( t_7 ); + CHECK_FUNC_RESULT( t_6 ) + AssPRec( t_4, (UInt)t_5, t_6 ); + t_5 = (Obj)R_file; + t_7 = GF_INPUT__FILENAME; + t_6 = CALL_0ARGS( t_7 ); + CHECK_FUNC_RESULT( t_6 ) + AssPRec( t_4, (UInt)t_5, t_6 ); + SortPRecRNam( t_4, 0 ); + CALL_2ARGS( t_1, t_2, t_3 ); + /* CHANGED_METHODS_OPERATION( opr, narg ); */ t_1 = GF_CHANGED__METHODS__OPERATION; CALL_2ARGS( t_1, a_opr, l_narg ); @@ -2437,8 +2478,8 @@ static Obj HdlrFunc7 ( t_6 = NewFunction( NameFunc[8], NargFunc[8], NamsFunc[8], HdlrFunc8 ); SET_ENVI_FUNC( t_6, STATE(CurrLVars) ); t_7 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_7, INTOBJ_INT(580)); - SET_ENDLINE_BODY(t_7, INTOBJ_INT(598)); + SET_STARTLINE_BODY(t_7, INTOBJ_INT(594)); + SET_ENDLINE_BODY(t_7, INTOBJ_INT(612)); SET_FILENAME_BODY(t_7, FileName); SET_BODY_FUNC(t_6, t_7); CHANGED_BAG( STATE(CurrLVars) ); @@ -3028,8 +3069,8 @@ static Obj HdlrFunc11 ( t_1 = NewFunction( NameFunc[12], NargFunc[12], NamsFunc[12], HdlrFunc12 ); SET_ENVI_FUNC( t_1, STATE(CurrLVars) ); t_2 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_2, INTOBJ_INT(777)); - SET_ENDLINE_BODY(t_2, INTOBJ_INT(781)); + SET_STARTLINE_BODY(t_2, INTOBJ_INT(791)); + SET_ENDLINE_BODY(t_2, INTOBJ_INT(795)); SET_FILENAME_BODY(t_2, FileName); SET_BODY_FUNC(t_1, t_2); CHANGED_BAG( STATE(CurrLVars) ); @@ -3108,8 +3149,8 @@ static Obj HdlrFunc11 ( t_6 = NewFunction( NameFunc[13], NargFunc[13], NamsFunc[13], HdlrFunc13 ); SET_ENVI_FUNC( t_6, STATE(CurrLVars) ); t_7 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_7, INTOBJ_INT(798)); - SET_ENDLINE_BODY(t_7, INTOBJ_INT(798)); + SET_STARTLINE_BODY(t_7, INTOBJ_INT(812)); + SET_ENDLINE_BODY(t_7, INTOBJ_INT(812)); SET_FILENAME_BODY(t_7, FileName); SET_BODY_FUNC(t_6, t_7); CHANGED_BAG( STATE(CurrLVars) ); @@ -3171,8 +3212,8 @@ static Obj HdlrFunc11 ( t_6 = NewFunction( NameFunc[14], NargFunc[14], NamsFunc[14], HdlrFunc14 ); SET_ENVI_FUNC( t_6, STATE(CurrLVars) ); t_7 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_7, INTOBJ_INT(811)); - SET_ENDLINE_BODY(t_7, INTOBJ_INT(834)); + SET_STARTLINE_BODY(t_7, INTOBJ_INT(825)); + SET_ENDLINE_BODY(t_7, INTOBJ_INT(848)); SET_FILENAME_BODY(t_7, FileName); SET_BODY_FUNC(t_6, t_7); CHANGED_BAG( STATE(CurrLVars) ); @@ -3220,8 +3261,8 @@ static Obj HdlrFunc11 ( t_6 = NewFunction( NameFunc[15], NargFunc[15], NamsFunc[15], HdlrFunc15 ); SET_ENVI_FUNC( t_6, STATE(CurrLVars) ); t_7 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_7, INTOBJ_INT(844)); - SET_ENDLINE_BODY(t_7, INTOBJ_INT(852)); + SET_STARTLINE_BODY(t_7, INTOBJ_INT(858)); + SET_ENDLINE_BODY(t_7, INTOBJ_INT(866)); SET_FILENAME_BODY(t_7, FileName); SET_BODY_FUNC(t_6, t_7); CHANGED_BAG( STATE(CurrLVars) ); @@ -3282,8 +3323,8 @@ static Obj HdlrFunc11 ( t_6 = NewFunction( NameFunc[16], NargFunc[16], NamsFunc[16], HdlrFunc16 ); SET_ENVI_FUNC( t_6, STATE(CurrLVars) ); t_7 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_7, INTOBJ_INT(861)); - SET_ENDLINE_BODY(t_7, INTOBJ_INT(874)); + SET_STARTLINE_BODY(t_7, INTOBJ_INT(875)); + SET_ENDLINE_BODY(t_7, INTOBJ_INT(888)); SET_FILENAME_BODY(t_7, FileName); SET_BODY_FUNC(t_6, t_7); CHANGED_BAG( STATE(CurrLVars) ); @@ -3663,8 +3704,8 @@ static Obj HdlrFunc17 ( t_4 = NewFunction( NameFunc[18], NargFunc[18], NamsFunc[18], HdlrFunc18 ); SET_ENVI_FUNC( t_4, STATE(CurrLVars) ); t_5 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_5, INTOBJ_INT(942)); - SET_ENDLINE_BODY(t_5, INTOBJ_INT(958)); + SET_STARTLINE_BODY(t_5, INTOBJ_INT(956)); + SET_ENDLINE_BODY(t_5, INTOBJ_INT(972)); SET_FILENAME_BODY(t_5, FileName); SET_BODY_FUNC(t_4, t_5); CHANGED_BAG( STATE(CurrLVars) ); @@ -3705,6 +3746,11 @@ static Obj HdlrFunc1 ( /* RUN_IMMEDIATE_METHODS_HITS := 0; */ AssGVar( G_RUN__IMMEDIATE__METHODS__HITS, INTOBJ_INT(0) ); + /* METHOD_LOCATIONS := [ ]; */ + t_1 = NEW_PLIST( T_PLIST, 0 ); + SET_LEN_PLIST( t_1, 0 ); + AssGVar( G_METHOD__LOCATIONS, t_1 ); + /* BIND_GLOBAL( "RunImmediateMethods", function ( obj, flags ) local flagspos, tried, type, j, imm, i, res, newflags; if IGNORE_IMMEDIATE_METHODS then @@ -3757,8 +3803,8 @@ static Obj HdlrFunc1 ( t_3 = NewFunction( NameFunc[2], NargFunc[2], NamsFunc[2], HdlrFunc2 ); SET_ENVI_FUNC( t_3, STATE(CurrLVars) ); t_4 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_4, INTOBJ_INT(26)); - SET_ENDLINE_BODY(t_4, INTOBJ_INT(117)); + SET_STARTLINE_BODY(t_4, INTOBJ_INT(31)); + SET_ENDLINE_BODY(t_4, INTOBJ_INT(122)); SET_FILENAME_BODY(t_4, FileName); SET_BODY_FUNC(t_3, t_4); CHANGED_BAG( STATE(CurrLVars) ); @@ -3846,6 +3892,9 @@ static Obj HdlrFunc1 ( fi; methods[i + (narg + 3)] := rank; methods[i + (narg + 4)] := IMMUTABLE_COPY_OBJ( info ); + ADD_LIST( METHOD_LOCATIONS, [ opr, method, narg, flags, rank, rec( + line := INPUT_LINENUMBER( ), + file := INPUT_FILENAME( ) ) ] ); CHANGED_METHODS_OPERATION( opr, narg ); return; end ); */ @@ -3854,8 +3903,8 @@ static Obj HdlrFunc1 ( t_3 = NewFunction( NameFunc[3], NargFunc[3], NamsFunc[3], HdlrFunc3 ); SET_ENVI_FUNC( t_3, STATE(CurrLVars) ); t_4 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_4, INTOBJ_INT(124)); - SET_ENDLINE_BODY(t_4, INTOBJ_INT(235)); + SET_STARTLINE_BODY(t_4, INTOBJ_INT(129)); + SET_ENDLINE_BODY(t_4, INTOBJ_INT(249)); SET_FILENAME_BODY(t_4, FileName); SET_BODY_FUNC(t_3, t_4); CHANGED_BAG( STATE(CurrLVars) ); @@ -3870,8 +3919,8 @@ static Obj HdlrFunc1 ( t_3 = NewFunction( NameFunc[4], NargFunc[4], NamsFunc[4], HdlrFunc4 ); SET_ENVI_FUNC( t_3, STATE(CurrLVars) ); t_4 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_4, INTOBJ_INT(282)); - SET_ENDLINE_BODY(t_4, INTOBJ_INT(284)); + SET_STARTLINE_BODY(t_4, INTOBJ_INT(296)); + SET_ENDLINE_BODY(t_4, INTOBJ_INT(298)); SET_FILENAME_BODY(t_4, FileName); SET_BODY_FUNC(t_3, t_4); CHANGED_BAG( STATE(CurrLVars) ); @@ -3886,8 +3935,8 @@ static Obj HdlrFunc1 ( t_3 = NewFunction( NameFunc[5], NargFunc[5], NamsFunc[5], HdlrFunc5 ); SET_ENVI_FUNC( t_3, STATE(CurrLVars) ); t_4 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_4, INTOBJ_INT(309)); - SET_ENDLINE_BODY(t_4, INTOBJ_INT(311)); + SET_STARTLINE_BODY(t_4, INTOBJ_INT(323)); + SET_ENDLINE_BODY(t_4, INTOBJ_INT(325)); SET_FILENAME_BODY(t_4, FileName); SET_BODY_FUNC(t_3, t_4); CHANGED_BAG( STATE(CurrLVars) ); @@ -4044,8 +4093,8 @@ static Obj HdlrFunc1 ( t_3 = NewFunction( NameFunc[6], NargFunc[6], NamsFunc[6], HdlrFunc6 ); SET_ENVI_FUNC( t_3, STATE(CurrLVars) ); t_4 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_4, INTOBJ_INT(322)); - SET_ENDLINE_BODY(t_4, INTOBJ_INT(529)); + SET_STARTLINE_BODY(t_4, INTOBJ_INT(336)); + SET_ENDLINE_BODY(t_4, INTOBJ_INT(543)); SET_FILENAME_BODY(t_4, FileName); SET_BODY_FUNC(t_3, t_4); CHANGED_BAG( STATE(CurrLVars) ); @@ -4101,8 +4150,8 @@ static Obj HdlrFunc1 ( t_2 = NewFunction( NameFunc[7], NargFunc[7], NamsFunc[7], HdlrFunc7 ); SET_ENVI_FUNC( t_2, STATE(CurrLVars) ); t_3 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_3, INTOBJ_INT(548)); - SET_ENDLINE_BODY(t_3, INTOBJ_INT(602)); + SET_STARTLINE_BODY(t_3, INTOBJ_INT(562)); + SET_ENDLINE_BODY(t_3, INTOBJ_INT(616)); SET_FILENAME_BODY(t_3, FileName); SET_BODY_FUNC(t_2, t_3); CHANGED_BAG( STATE(CurrLVars) ); @@ -4116,8 +4165,8 @@ static Obj HdlrFunc1 ( t_2 = NewFunction( NameFunc[9], NargFunc[9], NamsFunc[9], HdlrFunc9 ); SET_ENVI_FUNC( t_2, STATE(CurrLVars) ); t_3 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_3, INTOBJ_INT(605)); - SET_ENDLINE_BODY(t_3, INTOBJ_INT(611)); + SET_STARTLINE_BODY(t_3, INTOBJ_INT(619)); + SET_ENDLINE_BODY(t_3, INTOBJ_INT(625)); SET_FILENAME_BODY(t_3, FileName); SET_BODY_FUNC(t_2, t_3); CHANGED_BAG( STATE(CurrLVars) ); @@ -4145,8 +4194,8 @@ static Obj HdlrFunc1 ( t_3 = NewFunction( NameFunc[10], NargFunc[10], NamsFunc[10], HdlrFunc10 ); SET_ENVI_FUNC( t_3, STATE(CurrLVars) ); t_4 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_4, INTOBJ_INT(624)); - SET_ENDLINE_BODY(t_4, INTOBJ_INT(648)); + SET_STARTLINE_BODY(t_4, INTOBJ_INT(638)); + SET_ENDLINE_BODY(t_4, INTOBJ_INT(662)); SET_FILENAME_BODY(t_4, FileName); SET_BODY_FUNC(t_3, t_4); CHANGED_BAG( STATE(CurrLVars) ); @@ -4228,8 +4277,8 @@ static Obj HdlrFunc1 ( t_3 = NewFunction( NameFunc[11], NargFunc[11], NamsFunc[11], HdlrFunc11 ); SET_ENVI_FUNC( t_3, STATE(CurrLVars) ); t_4 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_4, INTOBJ_INT(773)); - SET_ENDLINE_BODY(t_4, INTOBJ_INT(875)); + SET_STARTLINE_BODY(t_4, INTOBJ_INT(787)); + SET_ENDLINE_BODY(t_4, INTOBJ_INT(889)); SET_FILENAME_BODY(t_4, FileName); SET_BODY_FUNC(t_3, t_4); CHANGED_BAG( STATE(CurrLVars) ); @@ -4280,8 +4329,8 @@ static Obj HdlrFunc1 ( t_3 = NewFunction( NameFunc[17], NargFunc[17], NamsFunc[17], HdlrFunc17 ); SET_ENVI_FUNC( t_3, STATE(CurrLVars) ); t_4 = NewBag( T_BODY, sizeof(BodyHeader) ); - SET_STARTLINE_BODY(t_4, INTOBJ_INT(910)); - SET_ENDLINE_BODY(t_4, INTOBJ_INT(959)); + SET_STARTLINE_BODY(t_4, INTOBJ_INT(924)); + SET_ENDLINE_BODY(t_4, INTOBJ_INT(973)); SET_FILENAME_BODY(t_4, FileName); SET_BODY_FUNC(t_3, t_4); CHANGED_BAG( STATE(CurrLVars) ); @@ -4336,6 +4385,8 @@ static Int InitKernel ( StructInitInfo * module ) InitFopyGVar( "TYPE_OBJ", &GF_TYPE__OBJ ); InitFopyGVar( "IMMUTABLE_COPY_OBJ", &GF_IMMUTABLE__COPY__OBJ ); InitFopyGVar( "IS_IDENTICAL_OBJ", &GF_IS__IDENTICAL__OBJ ); + InitFopyGVar( "INPUT_FILENAME", &GF_INPUT__FILENAME ); + InitFopyGVar( "INPUT_LINENUMBER", &GF_INPUT__LINENUMBER ); InitCopyGVar( "IS_OBJECT", &GC_IS__OBJECT ); InitCopyGVar( "TRY_NEXT_METHOD", &GC_TRY__NEXT__METHOD ); InitFopyGVar( "SUB_FLAGS", &GF_SUB__FLAGS ); @@ -4360,6 +4411,7 @@ static Int InitKernel ( StructInitInfo * module ) InitCopyGVar( "ViewObj", &GC_ViewObj ); InitCopyGVar( "RUN_IMMEDIATE_METHODS_CHECKS", &GC_RUN__IMMEDIATE__METHODS__CHECKS ); InitCopyGVar( "RUN_IMMEDIATE_METHODS_HITS", &GC_RUN__IMMEDIATE__METHODS__HITS ); + InitCopyGVar( "METHOD_LOCATIONS", &GC_METHOD__LOCATIONS ); InitFopyGVar( "BIND_GLOBAL", &GF_BIND__GLOBAL ); InitCopyGVar( "IGNORE_IMMEDIATE_METHODS", &GC_IGNORE__IMMEDIATE__METHODS ); InitCopyGVar( "IMM_FLAGS", &GC_IMM__FLAGS ); @@ -4394,44 +4446,44 @@ static Int InitKernel ( StructInitInfo * module ) InitFopyGVar( "CallFuncList", &GF_CallFuncList ); /* information for the functions */ - InitGlobalBag( &DefaultName, "GAPROOT/lib/oper1.g:DefaultName(-40042667)" ); - InitGlobalBag( &FileName, "GAPROOT/lib/oper1.g:FileName(-40042667)" ); - InitHandlerFunc( HdlrFunc1, "GAPROOT/lib/oper1.g:HdlrFunc1(-40042667)" ); - InitGlobalBag( &(NameFunc[1]), "GAPROOT/lib/oper1.g:NameFunc[1](-40042667)" ); - InitHandlerFunc( HdlrFunc2, "GAPROOT/lib/oper1.g:HdlrFunc2(-40042667)" ); - InitGlobalBag( &(NameFunc[2]), "GAPROOT/lib/oper1.g:NameFunc[2](-40042667)" ); - InitHandlerFunc( HdlrFunc3, "GAPROOT/lib/oper1.g:HdlrFunc3(-40042667)" ); - InitGlobalBag( &(NameFunc[3]), "GAPROOT/lib/oper1.g:NameFunc[3](-40042667)" ); - InitHandlerFunc( HdlrFunc4, "GAPROOT/lib/oper1.g:HdlrFunc4(-40042667)" ); - InitGlobalBag( &(NameFunc[4]), "GAPROOT/lib/oper1.g:NameFunc[4](-40042667)" ); - InitHandlerFunc( HdlrFunc5, "GAPROOT/lib/oper1.g:HdlrFunc5(-40042667)" ); - InitGlobalBag( &(NameFunc[5]), "GAPROOT/lib/oper1.g:NameFunc[5](-40042667)" ); - InitHandlerFunc( HdlrFunc6, "GAPROOT/lib/oper1.g:HdlrFunc6(-40042667)" ); - InitGlobalBag( &(NameFunc[6]), "GAPROOT/lib/oper1.g:NameFunc[6](-40042667)" ); - InitHandlerFunc( HdlrFunc7, "GAPROOT/lib/oper1.g:HdlrFunc7(-40042667)" ); - InitGlobalBag( &(NameFunc[7]), "GAPROOT/lib/oper1.g:NameFunc[7](-40042667)" ); - InitHandlerFunc( HdlrFunc8, "GAPROOT/lib/oper1.g:HdlrFunc8(-40042667)" ); - InitGlobalBag( &(NameFunc[8]), "GAPROOT/lib/oper1.g:NameFunc[8](-40042667)" ); - InitHandlerFunc( HdlrFunc9, "GAPROOT/lib/oper1.g:HdlrFunc9(-40042667)" ); - InitGlobalBag( &(NameFunc[9]), "GAPROOT/lib/oper1.g:NameFunc[9](-40042667)" ); - InitHandlerFunc( HdlrFunc10, "GAPROOT/lib/oper1.g:HdlrFunc10(-40042667)" ); - InitGlobalBag( &(NameFunc[10]), "GAPROOT/lib/oper1.g:NameFunc[10](-40042667)" ); - InitHandlerFunc( HdlrFunc11, "GAPROOT/lib/oper1.g:HdlrFunc11(-40042667)" ); - InitGlobalBag( &(NameFunc[11]), "GAPROOT/lib/oper1.g:NameFunc[11](-40042667)" ); - InitHandlerFunc( HdlrFunc12, "GAPROOT/lib/oper1.g:HdlrFunc12(-40042667)" ); - InitGlobalBag( &(NameFunc[12]), "GAPROOT/lib/oper1.g:NameFunc[12](-40042667)" ); - InitHandlerFunc( HdlrFunc13, "GAPROOT/lib/oper1.g:HdlrFunc13(-40042667)" ); - InitGlobalBag( &(NameFunc[13]), "GAPROOT/lib/oper1.g:NameFunc[13](-40042667)" ); - InitHandlerFunc( HdlrFunc14, "GAPROOT/lib/oper1.g:HdlrFunc14(-40042667)" ); - InitGlobalBag( &(NameFunc[14]), "GAPROOT/lib/oper1.g:NameFunc[14](-40042667)" ); - InitHandlerFunc( HdlrFunc15, "GAPROOT/lib/oper1.g:HdlrFunc15(-40042667)" ); - InitGlobalBag( &(NameFunc[15]), "GAPROOT/lib/oper1.g:NameFunc[15](-40042667)" ); - InitHandlerFunc( HdlrFunc16, "GAPROOT/lib/oper1.g:HdlrFunc16(-40042667)" ); - InitGlobalBag( &(NameFunc[16]), "GAPROOT/lib/oper1.g:NameFunc[16](-40042667)" ); - InitHandlerFunc( HdlrFunc17, "GAPROOT/lib/oper1.g:HdlrFunc17(-40042667)" ); - InitGlobalBag( &(NameFunc[17]), "GAPROOT/lib/oper1.g:NameFunc[17](-40042667)" ); - InitHandlerFunc( HdlrFunc18, "GAPROOT/lib/oper1.g:HdlrFunc18(-40042667)" ); - InitGlobalBag( &(NameFunc[18]), "GAPROOT/lib/oper1.g:NameFunc[18](-40042667)" ); + InitGlobalBag( &DefaultName, "GAPROOT/lib/oper1.g:DefaultName(-120437045)" ); + InitGlobalBag( &FileName, "GAPROOT/lib/oper1.g:FileName(-120437045)" ); + InitHandlerFunc( HdlrFunc1, "GAPROOT/lib/oper1.g:HdlrFunc1(-120437045)" ); + InitGlobalBag( &(NameFunc[1]), "GAPROOT/lib/oper1.g:NameFunc[1](-120437045)" ); + InitHandlerFunc( HdlrFunc2, "GAPROOT/lib/oper1.g:HdlrFunc2(-120437045)" ); + InitGlobalBag( &(NameFunc[2]), "GAPROOT/lib/oper1.g:NameFunc[2](-120437045)" ); + InitHandlerFunc( HdlrFunc3, "GAPROOT/lib/oper1.g:HdlrFunc3(-120437045)" ); + InitGlobalBag( &(NameFunc[3]), "GAPROOT/lib/oper1.g:NameFunc[3](-120437045)" ); + InitHandlerFunc( HdlrFunc4, "GAPROOT/lib/oper1.g:HdlrFunc4(-120437045)" ); + InitGlobalBag( &(NameFunc[4]), "GAPROOT/lib/oper1.g:NameFunc[4](-120437045)" ); + InitHandlerFunc( HdlrFunc5, "GAPROOT/lib/oper1.g:HdlrFunc5(-120437045)" ); + InitGlobalBag( &(NameFunc[5]), "GAPROOT/lib/oper1.g:NameFunc[5](-120437045)" ); + InitHandlerFunc( HdlrFunc6, "GAPROOT/lib/oper1.g:HdlrFunc6(-120437045)" ); + InitGlobalBag( &(NameFunc[6]), "GAPROOT/lib/oper1.g:NameFunc[6](-120437045)" ); + InitHandlerFunc( HdlrFunc7, "GAPROOT/lib/oper1.g:HdlrFunc7(-120437045)" ); + InitGlobalBag( &(NameFunc[7]), "GAPROOT/lib/oper1.g:NameFunc[7](-120437045)" ); + InitHandlerFunc( HdlrFunc8, "GAPROOT/lib/oper1.g:HdlrFunc8(-120437045)" ); + InitGlobalBag( &(NameFunc[8]), "GAPROOT/lib/oper1.g:NameFunc[8](-120437045)" ); + InitHandlerFunc( HdlrFunc9, "GAPROOT/lib/oper1.g:HdlrFunc9(-120437045)" ); + InitGlobalBag( &(NameFunc[9]), "GAPROOT/lib/oper1.g:NameFunc[9](-120437045)" ); + InitHandlerFunc( HdlrFunc10, "GAPROOT/lib/oper1.g:HdlrFunc10(-120437045)" ); + InitGlobalBag( &(NameFunc[10]), "GAPROOT/lib/oper1.g:NameFunc[10](-120437045)" ); + InitHandlerFunc( HdlrFunc11, "GAPROOT/lib/oper1.g:HdlrFunc11(-120437045)" ); + InitGlobalBag( &(NameFunc[11]), "GAPROOT/lib/oper1.g:NameFunc[11](-120437045)" ); + InitHandlerFunc( HdlrFunc12, "GAPROOT/lib/oper1.g:HdlrFunc12(-120437045)" ); + InitGlobalBag( &(NameFunc[12]), "GAPROOT/lib/oper1.g:NameFunc[12](-120437045)" ); + InitHandlerFunc( HdlrFunc13, "GAPROOT/lib/oper1.g:HdlrFunc13(-120437045)" ); + InitGlobalBag( &(NameFunc[13]), "GAPROOT/lib/oper1.g:NameFunc[13](-120437045)" ); + InitHandlerFunc( HdlrFunc14, "GAPROOT/lib/oper1.g:HdlrFunc14(-120437045)" ); + InitGlobalBag( &(NameFunc[14]), "GAPROOT/lib/oper1.g:NameFunc[14](-120437045)" ); + InitHandlerFunc( HdlrFunc15, "GAPROOT/lib/oper1.g:HdlrFunc15(-120437045)" ); + InitGlobalBag( &(NameFunc[15]), "GAPROOT/lib/oper1.g:NameFunc[15](-120437045)" ); + InitHandlerFunc( HdlrFunc16, "GAPROOT/lib/oper1.g:HdlrFunc16(-120437045)" ); + InitGlobalBag( &(NameFunc[16]), "GAPROOT/lib/oper1.g:NameFunc[16](-120437045)" ); + InitHandlerFunc( HdlrFunc17, "GAPROOT/lib/oper1.g:HdlrFunc17(-120437045)" ); + InitGlobalBag( &(NameFunc[17]), "GAPROOT/lib/oper1.g:NameFunc[17](-120437045)" ); + InitHandlerFunc( HdlrFunc18, "GAPROOT/lib/oper1.g:HdlrFunc18(-120437045)" ); + InitGlobalBag( &(NameFunc[18]), "GAPROOT/lib/oper1.g:NameFunc[18](-120437045)" ); /* return success */ return 0; @@ -4465,6 +4517,8 @@ static Int InitLibrary ( StructInitInfo * module ) G_TYPE__OBJ = GVarName( "TYPE_OBJ" ); G_IMMUTABLE__COPY__OBJ = GVarName( "IMMUTABLE_COPY_OBJ" ); G_IS__IDENTICAL__OBJ = GVarName( "IS_IDENTICAL_OBJ" ); + G_INPUT__FILENAME = GVarName( "INPUT_FILENAME" ); + G_INPUT__LINENUMBER = GVarName( "INPUT_LINENUMBER" ); G_IS__OBJECT = GVarName( "IS_OBJECT" ); G_TRY__NEXT__METHOD = GVarName( "TRY_NEXT_METHOD" ); G_SUB__FLAGS = GVarName( "SUB_FLAGS" ); @@ -4489,6 +4543,7 @@ static Int InitLibrary ( StructInitInfo * module ) G_ViewObj = GVarName( "ViewObj" ); G_RUN__IMMEDIATE__METHODS__CHECKS = GVarName( "RUN_IMMEDIATE_METHODS_CHECKS" ); G_RUN__IMMEDIATE__METHODS__HITS = GVarName( "RUN_IMMEDIATE_METHODS_HITS" ); + G_METHOD__LOCATIONS = GVarName( "METHOD_LOCATIONS" ); G_BIND__GLOBAL = GVarName( "BIND_GLOBAL" ); G_IGNORE__IMMEDIATE__METHODS = GVarName( "IGNORE_IMMEDIATE_METHODS" ); G_IMM__FLAGS = GVarName( "IMM_FLAGS" ); @@ -4523,6 +4578,8 @@ static Int InitLibrary ( StructInitInfo * module ) G_CallFuncList = GVarName( "CallFuncList" ); /* record names used in handlers */ + R_line = RNamName( "line" ); + R_file = RNamName( "file" ); R_MaxNrArgsMethod = RNamName( "MaxNrArgsMethod" ); /* information for the functions */ @@ -4619,6 +4676,8 @@ static Int PostRestore ( StructInitInfo * module ) G_TYPE__OBJ = GVarName( "TYPE_OBJ" ); G_IMMUTABLE__COPY__OBJ = GVarName( "IMMUTABLE_COPY_OBJ" ); G_IS__IDENTICAL__OBJ = GVarName( "IS_IDENTICAL_OBJ" ); + G_INPUT__FILENAME = GVarName( "INPUT_FILENAME" ); + G_INPUT__LINENUMBER = GVarName( "INPUT_LINENUMBER" ); G_IS__OBJECT = GVarName( "IS_OBJECT" ); G_TRY__NEXT__METHOD = GVarName( "TRY_NEXT_METHOD" ); G_SUB__FLAGS = GVarName( "SUB_FLAGS" ); @@ -4643,6 +4702,7 @@ static Int PostRestore ( StructInitInfo * module ) G_ViewObj = GVarName( "ViewObj" ); G_RUN__IMMEDIATE__METHODS__CHECKS = GVarName( "RUN_IMMEDIATE_METHODS_CHECKS" ); G_RUN__IMMEDIATE__METHODS__HITS = GVarName( "RUN_IMMEDIATE_METHODS_HITS" ); + G_METHOD__LOCATIONS = GVarName( "METHOD_LOCATIONS" ); G_BIND__GLOBAL = GVarName( "BIND_GLOBAL" ); G_IGNORE__IMMEDIATE__METHODS = GVarName( "IGNORE_IMMEDIATE_METHODS" ); G_IMM__FLAGS = GVarName( "IMM_FLAGS" ); @@ -4677,6 +4737,8 @@ static Int PostRestore ( StructInitInfo * module ) G_CallFuncList = GVarName( "CallFuncList" ); /* record names used in handlers */ + R_line = RNamName( "line" ); + R_file = RNamName( "file" ); R_MaxNrArgsMethod = RNamName( "MaxNrArgsMethod" ); /* information for the functions */ @@ -4748,7 +4810,7 @@ static StructInitInfo module = { /* revision_c = */ 0, /* revision_h = */ 0, /* version = */ 0, - /* crc = */ -40042667, + /* crc = */ -120437045, /* initKernel = */ InitKernel, /* initLibrary = */ InitLibrary, /* checkInit = */ 0, diff --git a/tst/testinstall/type.tst b/tst/testinstall/type.tst index 5f6785fd25..fda9a9c6d5 100644 --- a/tst/testinstall/type.tst +++ b/tst/testinstall/type.tst @@ -51,3 +51,11 @@ gap> FilterByName("IsCommutative"); gap> CategoryByName("IsMagma"); + +# +gap> r := LocationOfDeclaration(IsCommutative);; +gap> IsRecord(r); +true +gap> IsBound(r.file); IsBound(r.line); +true +true diff --git a/tst/testinstall/varargs.tst b/tst/testinstall/varargs.tst index fcda27bb23..8a46c1da2c 100644 --- a/tst/testinstall/varargs.tst +++ b/tst/testinstall/varargs.tst @@ -83,11 +83,11 @@ function ( object... ) end gap> Print(INSTALL_METHOD,"\n"); function ( <>, <> ) - <> + <> end gap> Display(InstallMethod); function ( <>... ) - <> + <> end gap> [1..2]; [ 1, 2 ]