2220 checkReceiverIsGlobalNamed:expectedName |
2220 checkReceiverIsGlobalNamed:expectedName |
2221 ^ self variableNameOfReceiver = expectedName |
2221 ^ self variableNameOfReceiver = expectedName |
2222 ! |
2222 ! |
2223 |
2223 |
2224 classNameOf:aReceiver |
2224 classNameOf:aReceiver |
|
2225 "old" |
2225 |
2226 |
2226 | nameSpace clsName | |
2227 | nameSpace clsName | |
2227 nameSpace := Class nameSpaceQuerySignal query. |
2228 nameSpace := Class nameSpaceQuerySignal query. |
2228 |
2229 |
2229 (aReceiver isUnaryMessage and:[aReceiver selector == #class]) |
2230 (aReceiver isUnaryMessage and:[aReceiver selector == #class]) |
2230 ifTrue:[clsName := (aReceiver receiver name) , ' class'] |
2231 ifTrue:[clsName := (aReceiver receiver name) , ' class'] |
2231 ifFalse:[clsName := aReceiver name]. |
2232 ifFalse:[clsName := aReceiver name]. |
2232 |
2233 |
2233 ^(nameSpace ~~ Smalltalk and:[(clsName startsWith: nameSpace name) not]) |
2234 (nameSpace ~~ Smalltalk and:[(clsName startsWith: nameSpace name) not]) |
2234 ifTrue:[nameSpace name , '::' , clsName] |
2235 ifTrue:[ |
2235 ifFalse:[clsName]. |
2236 ^ nameSpace name , '::' , clsName |
|
2237 ] ifFalse:[ |
|
2238 ^ clsName |
|
2239 ]. |
|
2240 |
|
2241 "Modified: / 24-01-2012 / 17:07:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
2242 ! |
|
2243 |
|
2244 classNameOfRememberingNamespace:aReceiver |
|
2245 "new" |
|
2246 |
|
2247 | nameSpace clsName | |
|
2248 |
|
2249 nameSpace := Class nameSpaceQuerySignal query. |
|
2250 |
|
2251 (aReceiver isUnaryMessage and:[aReceiver selector == #class]) |
|
2252 ifTrue:[clsName := (aReceiver receiver name) , ' class'] |
|
2253 ifFalse:[clsName := aReceiver name]. |
|
2254 |
|
2255 (nameSpace ~~ Smalltalk and:[(clsName startsWith: nameSpace name) not]) |
|
2256 ifTrue:[ |
|
2257 "/ old: remember namespace in name |
|
2258 "/ ^ nameSpace name , '::' , clsName |
|
2259 "/ new: remember in override |
|
2260 nameSpaceOverride := nameSpace. |
|
2261 ^ clsName |
|
2262 ] ifFalse:[ |
|
2263 nameSpaceOverride := nil. |
|
2264 ^ clsName |
|
2265 ]. |
2236 |
2266 |
2237 "Modified: / 24-01-2012 / 17:07:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2267 "Modified: / 24-01-2012 / 17:07:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2238 ! |
2268 ! |
2239 |
2269 |
2240 extractMethodsClassAndSelectorFromReceiver |
2270 extractMethodsClassAndSelectorFromReceiver |
2245 (receiver isMessage |
2275 (receiver isMessage |
2246 and:[receiverSelector == #'compiledMethodAt:']) ifFalse:[ |
2276 and:[receiverSelector == #'compiledMethodAt:']) ifFalse:[ |
2247 self error:'unexpected change' mayProceed:true. |
2277 self error:'unexpected change' mayProceed:true. |
2248 ^ false. |
2278 ^ false. |
2249 ]. |
2279 ]. |
2250 className := self classNameOf:receiverReceiver. |
2280 |
|
2281 "/ className := self classNameOf:receiverReceiver. |
|
2282 className := self classNameOfRememberingNamespace:receiverReceiver. |
2251 self assert:className notNil. |
2283 self assert:className notNil. |
2252 |
2284 |
2253 "/ nameSpace ~~ Smalltalk ifTrue:[ |
|
2254 "/ className := nameSpace name , '::' , className |
|
2255 "/ ]. |
|
2256 methodSelector := (receiver arguments at:1) evaluate. |
2285 methodSelector := (receiver arguments at:1) evaluate. |
2257 self assert:methodSelector notNil. |
2286 self assert:methodSelector notNil. |
2258 ^ true. |
2287 ^ true. |
2259 |
2288 |
2260 "Created: / 27-07-2012 / 21:33:47 / cg" |
2289 "Created: / 27-07-2012 / 21:33:47 / cg" |
2261 ! |
2290 ! |
2262 |
2291 |
2263 receiversClassName |
2292 receiversClassName |
2264 ^ self classNameOf:receiver |
2293 ^ self classNameOf:receiver |
|
2294 ! |
|
2295 |
|
2296 receiversClassNameRememberingNamespace |
|
2297 ^ self classNameOfRememberingNamespace:receiver |
2265 ! |
2298 ! |
2266 |
2299 |
2267 variableNameOfReceiver |
2300 variableNameOfReceiver |
2268 |
2301 |
2269 receiver isVariable ifFalse:[ ^ nil ]. |
2302 receiver isVariable ifFalse:[ ^ nil ]. |
2314 |
2347 |
2315 handleCategoriesForChange |
2348 handleCategoriesForChange |
2316 |selector category categories attributes change| |
2349 |selector category categories attributes change| |
2317 |
2350 |
2318 selector := arguments first value. |
2351 selector := arguments first value. |
2319 className := self receiversClassName. |
2352 className := self receiversClassNameRememberingNamespace. |
2320 |
2353 |
2321 categories := OrderedCollection new. |
2354 categories := OrderedCollection new. |
2322 attributes := OrderedCollection new. |
2355 attributes := OrderedCollection new. |
2323 |
2356 |
2324 [ |
2357 [ |
2337 change := MethodCategoryChange |
2370 change := MethodCategoryChange |
2338 className:className |
2371 className:className |
2339 selector:selector |
2372 selector:selector |
2340 source:(parseTree printString) |
2373 source:(parseTree printString) |
2341 category:(categories first). |
2374 category:(categories first). |
|
2375 change nameSpaceOverride:nameSpaceOverride. |
2342 self addChange:change. |
2376 self addChange:change. |
2343 ] ifFalse:[ |
2377 ] ifFalse:[ |
2344 self halt:'multiple/missing categories not supported'. |
2378 self halt:'multiple/missing categories not supported'. |
2345 ]. |
2379 ]. |
2346 |
2380 |
2351 ] ifFalse:[ |
2385 ] ifFalse:[ |
2352 change := MethodPrivacyChange |
2386 change := MethodPrivacyChange |
2353 className:className |
2387 className:className |
2354 selector:selector |
2388 selector:selector |
2355 privacy:(attributes first asSymbol). |
2389 privacy:(attributes first asSymbol). |
|
2390 change nameSpaceOverride:nameSpaceOverride. |
2356 change source:(parseTree printString). |
2391 change source:(parseTree printString). |
2357 self addChange:change. |
2392 self addChange:change. |
2358 ]. |
2393 ]. |
2359 ] ifFalse:[ |
2394 ] ifFalse:[ |
2360 self halt:'multiple/missing attributes not supported'. |
2395 self halt:'multiple/missing attributes not supported'. |
2363 ! |
2398 ! |
2364 |
2399 |
2365 handleClassCommentChange |
2400 handleClassCommentChange |
2366 |change| |
2401 |change| |
2367 |
2402 |
2368 className := self receiversClassName. |
2403 className := self receiversClassNameRememberingNamespace. |
2369 "/ nameSpace ~~ Smalltalk ifTrue:[ |
|
2370 "/ className := nameSpace name , '::' , className |
|
2371 "/ ]. |
|
2372 |
2404 |
2373 change := ClassCommentChange new. |
2405 change := ClassCommentChange new. |
2374 change className:className comment:(arguments at:1) evaluate. |
2406 change className:className comment:(arguments at:1) evaluate. |
|
2407 change nameSpaceOverride:nameSpaceOverride. |
2375 change source:(parseTree printString). |
2408 change source:(parseTree printString). |
2376 self addChange:change. |
2409 self addChange:change. |
2377 ^ true |
2410 ^ true |
2378 ! |
2411 ! |
2379 |
2412 |
2380 handleClassDefinitionChange |
2413 handleClassDefinitionChange |
2381 |nameSpace change| |
2414 |nameSpace change| |
2382 |
2415 |
2383 className := (arguments at:1) evaluate. |
2416 className := (arguments at:1) evaluate. |
2384 "/ nameSpace ~~ Smalltalk ifTrue:[ |
2417 |
2385 "/ className := nameSpace name , '::' , className |
|
2386 "/ ]. |
|
2387 nameSpace := Class nameSpaceQuerySignal query. |
2418 nameSpace := Class nameSpaceQuerySignal query. |
2388 nameSpace ~~ Smalltalk ifTrue:[ |
2419 (nameSpace == Smalltalk) ifTrue:[ nameSpace := nil ]. |
2389 className := nameSpace name , '::' , className |
2420 |
2390 ]. |
2421 "/ old: remember namespace in className |
|
2422 "/ nameSpace ~~ Smalltalk ifTrue:[ |
|
2423 "/ className := nameSpace name , '::' , className |
|
2424 "/ ]. |
2391 |
2425 |
2392 change := ClassDefinitionChange new. |
2426 change := ClassDefinitionChange new. |
2393 change className:className; source:(parseTree printString). |
2427 change className:className; source:(parseTree printString). |
|
2428 "/ new: remember in override |
|
2429 change nameSpaceOverride:nameSpace. |
2394 receiver isVariable ifTrue:[ |
2430 receiver isVariable ifTrue:[ |
2395 change superClassName:receiver name. |
2431 change superClassName:receiver name. |
2396 ]. |
2432 ]. |
2397 selector keywords with:arguments do:[:kw :arg | |
2433 selector keywords with:arguments do:[:kw :arg | |
2398 kw = #'instanceVariableNames:' ifTrue:[ |
2434 kw = #'instanceVariableNames:' ifTrue:[ |
2426 ! |
2462 ! |
2427 |
2463 |
2428 handleClassInstanceVariableDefinitionChange |
2464 handleClassInstanceVariableDefinitionChange |
2429 |change| |
2465 |change| |
2430 |
2466 |
2431 className := self receiversClassName. |
2467 className := self receiversClassNameRememberingNamespace. |
2432 |
2468 |
2433 "/ nameSpace ~~ Smalltalk ifTrue:[ |
|
2434 "/ className := nameSpace name , '::' , className |
|
2435 "/ ]. |
|
2436 change := ClassInstVarDefinitionChange new. |
2469 change := ClassInstVarDefinitionChange new. |
2437 change className:className. |
2470 change className:className. |
|
2471 change nameSpaceOverride:nameSpaceOverride. |
2438 change source:(parseTree printString). |
2472 change source:(parseTree printString). |
2439 change classInstVarNames:(parseTree arguments first value asCollectionOfWords asArray). |
2473 change classInstVarNames:(parseTree arguments first value asCollectionOfWords asArray). |
2440 self addChange:change. |
2474 self addChange:change. |
2441 ^ true |
2475 ^ true |
2442 |
2476 |
2454 change |
2488 change |
2455 className:className |
2489 className:className |
2456 selector:methodSelector |
2490 selector:methodSelector |
2457 category:(arguments at:1) evaluate. |
2491 category:(arguments at:1) evaluate. |
2458 |
2492 |
|
2493 change nameSpaceOverride:nameSpaceOverride. |
2459 self addChange:change. |
2494 self addChange:change. |
2460 ^ true |
2495 ^ true |
2461 |
2496 |
2462 "Modified: / 27-07-2012 / 21:34:42 / cg" |
2497 "Modified: / 27-07-2012 / 21:34:42 / cg" |
2463 ! |
2498 ! |
2464 |
2499 |
2465 handleMethodCategoryRenameChange |
2500 handleMethodCategoryRenameChange |
2466 |change| |
2501 |change| |
2467 |
2502 |
2468 className := self receiversClassName. |
2503 className := self receiversClassNameRememberingNamespace. |
2469 "/ nameSpace ~~ Smalltalk ifTrue:[ |
|
2470 "/ className := nameSpace name , '::' , className |
|
2471 "/ ]. |
|
2472 |
2504 |
2473 change := MethodCategoryRenameChange new. |
2505 change := MethodCategoryRenameChange new. |
2474 change |
2506 change |
2475 className:className; |
2507 className:className; |
2476 oldCategoryName:(arguments at:1) evaluate |
2508 oldCategoryName:(arguments at:1) evaluate |
2477 newCategoryName:(arguments at:2) evaluate. |
2509 newCategoryName:(arguments at:2) evaluate. |
2478 |
2510 |
|
2511 change nameSpaceOverride:nameSpaceOverride. |
2479 self addChange:change. |
2512 self addChange:change. |
2480 ^ true |
2513 ^ true |
2481 ! |
2514 ! |
2482 |
2515 |
2483 handleMethodChange |
2516 handleMethodChange |
2503 ! |
2536 ! |
2504 |
2537 |
2505 handleMethodChangeUnsafe |
2538 handleMethodChangeUnsafe |
2506 |priv categoryName methodSource changes change parser | |
2539 |priv categoryName methodSource changes change parser | |
2507 |
2540 |
|
2541 className := self receiversClassNameRememberingNamespace. |
|
2542 |
2508 (selector == #'ignoredMethodsFor:') ifTrue:[ |
2543 (selector == #'ignoredMethodsFor:') ifTrue:[ |
2509 priv := #ignored. |
2544 priv := #ignored. |
2510 ] ifFalse:[ |
2545 ] ifFalse:[ |
2511 priv := nil |
2546 priv := nil |
2512 ]. |
2547 ]. |
2513 className := self receiversClassName. |
|
2514 "/ nameSpace ~~ Smalltalk ifTrue:[ |
|
2515 "/ className := nameSpace name , '::' , className |
|
2516 "/ ]. |
|
2517 ((selector == #'methods') |
2548 ((selector == #'methods') |
2518 or:[(selector == #'publicMethods') |
2549 or:[(selector == #'publicMethods') |
2519 or:[(selector == #'methodsFor')]]) ifTrue:[ |
2550 or:[(selector == #'methodsFor')]]) ifTrue:[ |
2520 categoryName := 'uncategorized public' |
2551 categoryName := 'uncategorized public' |
2521 ] ifFalse:[ |
2552 ] ifFalse:[ |
2553 selector:methodSelector |
2584 selector:methodSelector |
2554 source:methodSource |
2585 source:methodSource |
2555 category:categoryName |
2586 category:categoryName |
2556 privacy:priv. |
2587 privacy:priv. |
2557 |
2588 |
|
2589 change nameSpaceOverride:nameSpaceOverride. |
2558 self addChange:change. |
2590 self addChange:change. |
2559 |
2591 |
2560 inputStream skipSeparators. |
2592 inputStream skipSeparators. |
2561 lineNumber := inputStream lineNumber. |
2593 lineNumber := inputStream lineNumber. |
2562 position := inputStream position1Based. |
2594 position := inputStream position1Based. |
2622 self addChange:change. |
2656 self addChange:change. |
2623 ^ true |
2657 ^ true |
2624 ! |
2658 ! |
2625 |
2659 |
2626 handlePrimitiveChange |
2660 handlePrimitiveChange |
2627 |change primSource| |
2661 self handlePrimitiveChange:nil |
2628 |
|
2629 className := self receiversClassName. |
|
2630 "/ nameSpace ~~ Smalltalk ifTrue:[ |
|
2631 "/ className := nameSpace name , '::' , className |
|
2632 "/ ]. |
|
2633 |
|
2634 inputStream skipSeparators. |
|
2635 primSource := inputStream nextChunk. |
|
2636 |
|
2637 selector == #'primitiveDefinitions' ifTrue:[ |
|
2638 change := ClassPrimitiveDefinitionsChange new |
|
2639 ] ifFalse:[ |
|
2640 selector == #'primitiveFunctions' ifTrue:[ |
|
2641 change := ClassPrimitiveFunctionsChange new |
|
2642 ] ifFalse:[ |
|
2643 change := ClassPrimitiveVariablesChange new |
|
2644 ] |
|
2645 ]. |
|
2646 change className:className source:primSource. |
|
2647 self addChange:change. |
|
2648 ^ true |
|
2649 ! |
2662 ! |
2650 |
2663 |
2651 handlePrimitiveChange: sourceOrNil |
2664 handlePrimitiveChange: sourceOrNil |
2652 "if sourceOrNil is nil, the def has not been read and must be read from |
2665 "if sourceOrNil is nil, the def has not been read and must be read from |
2653 the next chunk. Otherwise, it has been already read as argument." |
2666 the next chunk. Otherwise, it has been already read as argument." |
2654 |
2667 |
2655 |change primSource| |
2668 |change primSource| |
2656 |
2669 |
2657 className := self receiversClassName. |
2670 className := self receiversClassNameRememberingNamespace. |
2658 "/ nameSpace ~~ Smalltalk ifTrue:[ |
2671 |
2659 "/ className := nameSpace name , '::' , className |
|
2660 "/ ]. |
|
2661 sourceOrNil notNil ifTrue:[ |
2672 sourceOrNil notNil ifTrue:[ |
2662 primSource := sourceOrNil |
2673 primSource := sourceOrNil |
2663 ] ifFalse:[ |
2674 ] ifFalse:[ |
2664 inputStream skipSeparators. |
2675 inputStream skipSeparators. |
2665 primSource := inputStream nextChunk. |
2676 primSource := inputStream nextChunk. |
2702 |
2714 |
2703 handleRemoveMethodChange |
2715 handleRemoveMethodChange |
2704 |change| |
2716 |change| |
2705 |
2717 |
2706 className := self receiversClassName. |
2718 className := self receiversClassName. |
2707 "/ nameSpace ~~ Smalltalk ifTrue:[ |
2719 |
2708 "/ className := nameSpace name , '::' , className |
|
2709 "/ ]. |
|
2710 methodSelector := (arguments at:1) evaluate. |
2720 methodSelector := (arguments at:1) evaluate. |
2711 change := MethodRemoveChange new. |
2721 change := MethodRemoveChange new. |
2712 change className:className selector:methodSelector. |
2722 change className:className selector:methodSelector. |
2713 self addChange:change. |
2723 self addChange:change. |
2714 ^ true |
2724 ^ true |
2735 |
2745 |
2736 inputStream skipSeparators. |
2746 inputStream skipSeparators. |
2737 |
2747 |
2738 comment := inputStream nextChunk. |
2748 comment := inputStream nextChunk. |
2739 |
2749 |
2740 className := self receiversClassName. |
2750 className := self receiversClassNameRememberingNamespace. |
|
2751 |
2741 change := ClassCommentChange new. |
2752 change := ClassCommentChange new. |
2742 change className:className comment:comment. |
2753 change className:className comment:comment. |
2743 change source:(parseTree printString). |
2754 change source:(parseTree printString). |
2744 self addChange:change. |
2755 self addChange:change. |
2745 ^ true |
2756 ^ true |
2825 " |
2836 " |
2826 |
2837 |
2827 | kind sel | |
2838 | kind sel | |
2828 inputStream skip: 5. |
2839 inputStream skip: 5. |
2829 kind := inputStream upTo: Character space. |
2840 kind := inputStream upTo: Character space. |
|
2841 (kind endsWith:$:) ifTrue:[ |
|
2842 kind := kind copyWithoutLast:1 |
|
2843 ]. |
2830 sel := ('process_', kind) asSymbolIfInterned. |
2844 sel := ('process_', kind) asSymbolIfInterned. |
2831 sel notNil ifTrue:[ |
2845 sel notNil ifTrue:[ |
2832 MessageNotUnderstood handle:[ |
2846 MessageNotUnderstood handle:[ |
2833 "/Unknown info record, do nothing" |
2847 self process_otherInfo:kind |
2834 ] do:[ |
2848 ] do:[ |
2835 self perform: sel. |
2849 self perform: sel. |
2836 ] |
2850 ] |
|
2851 ] ifFalse:[ |
|
2852 self process_otherInfo:kind |
2837 ] |
2853 ] |
2838 |
2854 |
2839 "Created: / 30-03-2012 / 16:44:25 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2855 "Created: / 30-03-2012 / 16:44:25 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2840 ! |
2856 ! |
2841 |
2857 |
2861 "'comment:' chunk (ST/X)" |
2877 "'comment:' chunk (ST/X)" |
2862 |
2878 |
2863 ^ self handleClassCommentChange. |
2879 ^ self handleClassCommentChange. |
2864 ! |
2880 ! |
2865 |
2881 |
|
2882 process_encoding |
|
2883 "St/X encoding info record. Ignored" |
|
2884 ! |
|
2885 |
2866 process_ignoredMethodsFor_ |
2886 process_ignoredMethodsFor_ |
2867 "'ignoredMethodsFor:' chunk (ST/X)" |
2887 "'ignoredMethodsFor:' chunk (ST/X)" |
2868 |
2888 |
2869 ^ self handleMethodChange. |
2889 ^ self handleMethodChange. |
2870 ! |
2890 ! |
2907 |
2927 |
2908 process_name_ |
2928 process_name_ |
2909 "'name:' chunk (ST/X)" |
2929 "'name:' chunk (ST/X)" |
2910 |
2930 |
2911 ^ self handleNameSpaceCreationChange. |
2931 ^ self handleNameSpaceCreationChange. |
|
2932 ! |
|
2933 |
|
2934 process_otherInfo:what |
|
2935 "'---- <what> 12-03-2012 10:49:40 ----' |
|
2936 |
|
2937 '<what>' is already read from inputStream. |
|
2938 " |
|
2939 |
|
2940 "/ inputStream skipSeparators. |
|
2941 self addChange: (InfoChange type: what data: (inputStream upToEnd) timestamp: nil) |
|
2942 |
|
2943 "Created: / 18-05-2012 / 17:03:02 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
2912 ! |
2944 ! |
2913 |
2945 |
2914 process_package_ |
2946 process_package_ |
2915 "'package:' chunk (ST/X)" |
2947 "'package:' chunk (ST/X)" |
2916 |
2948 |
4212 ! ! |
4244 ! ! |
4213 |
4245 |
4214 !ChangeSet class methodsFor:'documentation'! |
4246 !ChangeSet class methodsFor:'documentation'! |
4215 |
4247 |
4216 version |
4248 version |
4217 ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.218 2013-04-02 12:03:05 stefan Exp $' |
4249 ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.219 2013-04-02 19:23:39 cg Exp $' |
4218 ! |
4250 ! |
4219 |
4251 |
4220 version_CVS |
4252 version_CVS |
4221 ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.218 2013-04-02 12:03:05 stefan Exp $' |
4253 ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.219 2013-04-02 19:23:39 cg Exp $' |
4222 ! |
4254 ! |
4223 |
4255 |
4224 version_SVN |
4256 version_SVN |
4225 ^ '§Id: ChangeSet.st 1945 2012-07-31 11:53:41Z vranyj1 §' |
4257 ^ '§Id: ChangeSet.st 1945 2012-07-31 11:53:41Z vranyj1 §' |
4226 ! ! |
4258 ! ! |