changeset 15947 | edce1c1a0ab9 |
parent 15821 | 5ba671bedf2e |
child 16020 | fa71b75a7550 |
15946:45304252112b | 15947:edce1c1a0ab9 |
---|---|
149 the sourceCodemanager is always getting the source for the classes correct version. |
149 the sourceCodemanager is always getting the source for the classes correct version. |
150 In contrast, the local file might be different from (edited in an external tool) in |
150 In contrast, the local file might be different from (edited in an external tool) in |
151 the meantime. You have been warned - better leave it false (the sourceCodemanager will |
151 the meantime. You have been warned - better leave it false (the sourceCodemanager will |
152 fill its cache and eventually be just as fast...)" |
152 fill its cache and eventually be just as fast...)" |
153 |
153 |
154 ^ TryLocalSourceFirst |
154 "JV: When smalltalk is not yet initialized, do use local sources |
155 because before that, SCM support may not be loaded and configured |
|
156 properly, leading to funny errors." |
|
157 ^ Smalltalk isInitialized not or:[TryLocalSourceFirst == true]. |
|
155 |
158 |
156 "Created: 24.1.1996 / 19:55:35 / cg" |
159 "Created: 24.1.1996 / 19:55:35 / cg" |
157 ! |
160 ! |
158 |
161 |
159 tryLocalSourceFirst:aBoolean |
162 tryLocalSourceFirst:aBoolean |
362 |
365 |
363 |lines line| |
366 |lines line| |
364 |
367 |
365 lines := aMethodSourceString asCollectionOfLines. |
368 lines := aMethodSourceString asCollectionOfLines. |
366 lines do:[:l | |
369 lines do:[:l | |
367 |i| |
370 |i| |
368 |
371 |
369 i := l indexOfSubCollection:'$Header: '. |
372 i := l indexOfSubCollection:'$Header: '. |
370 "JV @ 2009-12-13: Also search for '$Id: ' (because of SVN-only classes)" |
373 "JV @ 2009-12-13: Also search for '$Id: ' (because of SVN-only classes)" |
371 i == 0 ifTrue:[ |
374 i == 0 ifTrue:[ |
372 i := l indexOfSubCollection:'$Id: ']. |
375 i := l indexOfSubCollection:'$Id: ']. |
373 i ~~ 0 ifTrue:[ |
376 "JV @ 2013-07-18: Also search for '$Changeset: ' (because of Mercurial-only classes)" |
374 line := l copyFrom:i. |
377 i == 0 ifTrue:[ |
375 i := line lastIndexOf:$$. |
378 i := l indexOfSubCollection:'$Changeset: ']. |
376 i > 1 ifTrue:[ |
379 |
377 line := line copyTo:i. |
380 i ~~ 0 ifTrue:[ |
378 ]. |
381 line := l copyFrom:i. |
379 ^ line |
382 i := line lastIndexOf:$$. |
380 ] |
383 i > 1 ifTrue:[ |
384 line := line copyTo:i. |
|
385 ]. |
|
386 ^ line |
|
387 ] |
|
381 ]. |
388 ]. |
382 ^ nil |
389 ^ nil |
383 |
390 |
384 "Created: / 15-10-1996 / 18:57:57 / cg" |
391 "Created: / 15-10-1996 / 18:57:57 / cg" |
385 "Modified: / 22-10-2008 / 20:29:50 / cg" |
392 "Modified: / 22-10-2008 / 20:29:50 / cg" |
393 "Modified: / 19-07-2013 / 23:32:42 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
386 ! ! |
394 ! ! |
387 |
395 |
388 !Class class methodsFor:'misc'! |
396 !Class class methodsFor:'misc'! |
389 |
397 |
390 template:aCategoryString |
398 template:aCategoryString |
1730 |
1738 |
1731 "Created: / 07-12-1995 / 13:16:46 / cg" |
1739 "Created: / 07-12-1995 / 13:16:46 / cg" |
1732 "Modified: / 05-12-2006 / 22:04:26 / cg" |
1740 "Modified: / 05-12-2006 / 22:04:26 / cg" |
1733 ! |
1741 ! |
1734 |
1742 |
1743 sourceCodeManagerFromBinaryRevision |
|
1744 |
|
1745 "Returns the source code manager that should be used for |
|
1746 source code access based in class's binary revision. |
|
1747 If not binary revision is available, then configured source |
|
1748 code manager is returned. If source code management |
|
1749 is disabled or particular source code manager is not enabled, |
|
1750 return nil. |
|
1751 |
|
1752 Source code manager for source access may differ from |
|
1753 configured source code manager: |
|
1754 |
|
1755 - #sourceCodeManager returns the manager use has configured for |
|
1756 this class using preferences |
|
1757 |
|
1758 - #sourceCodeManagerForSourceAccess is the manager used when asking |
|
1759 for class source code. It compares version_XXX methods with |
|
1760 class's binary revision and. When method_XXX matches the |
|
1761 binary revision string, XXX source code manager is returned, |
|
1762 as this class has been likely compiled from a source checked out |
|
1763 using returned source code manager |
|
1764 |
|
1765 CAVEAT: Now, the code expects that the revision string is in |
|
1766 format '$revision ident$SCM'. It won't work for managers that |
|
1767 does not use dollar expansion. For, only CVS, SVN and Perforce |
|
1768 are used so this code should work |
|
1769 " |
|
1770 |
|
1771 |
|
1772 |
|
1773 |
|
1774 revision ifNil:[^self sourceCodeManager]. |
|
1775 |
|
1776 AbstractSourceCodeManager availableManagers do:[:mgr| |
|
1777 (revision endsWith: mgr managerTypeNameShort) ifTrue:[ |
|
1778 ^mgr |
|
1779 ] |
|
1780 ]. |
|
1781 |
|
1782 "binary revision is not nil and we haven't found source code manager. |
|
1783 This may happen when (i) given source code manager is not available |
|
1784 or (ii) source version methods are somehow corrupted. |
|
1785 |
|
1786 Let's be strict about it for now and throw and error. More relaxed |
|
1787 version may simply return nil" |
|
1788 |
|
1789 "/ self error:'Cannot find source code manager for source access ' , |
|
1790 "/ '(manager yet not loaded or binary revision corrupted)' |
|
1791 "/ mayProceed: true. |
|
1792 |
|
1793 ^nil |
|
1794 |
|
1795 |
|
1796 " |
|
1797 Object sourceCodeManager |
|
1798 Object sourceCodeManagerForSourceAccess |
|
1799 |
|
1800 JavaVM sourceCodeManager |
|
1801 JavaVM sourceCodeManagerForSourceAccess |
|
1802 " |
|
1803 |
|
1804 "Created: / 06-10-2011 / 09:33:33 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1805 ! |
|
1806 |
|
1735 subclasses |
1807 subclasses |
1736 "return a collection of the direct subclasses of the receiver" |
1808 "return a collection of the direct subclasses of the receiver" |
1737 |
1809 |
1738 "/ use cached information (avoid class hierarchy search), if possible |
1810 "/ use cached information (avoid class hierarchy search), if possible |
1739 (subclasses isNil |
1811 (subclasses isNil |
1804 self withAllPrivateClassesDo:[:cls | coll add:cls]. |
1876 self withAllPrivateClassesDo:[:cls | coll add:cls]. |
1805 ^ coll |
1877 ^ coll |
1806 |
1878 |
1807 "Created: / 18-07-2011 / 09:14:38 / cg" |
1879 "Created: / 18-07-2011 / 09:14:38 / cg" |
1808 ! ! |
1880 ! ! |
1809 |
|
1810 |
1881 |
1811 !Class methodsFor:'adding & removing'! |
1882 !Class methodsFor:'adding & removing'! |
1812 |
1883 |
1813 removeFromSystem |
1884 removeFromSystem |
1814 "ST-80 compatibility |
1885 "ST-80 compatibility |
2624 ! |
2695 ! |
2625 |
2696 |
2626 fileOutDefinitionOn:aStream |
2697 fileOutDefinitionOn:aStream |
2627 "append an expression on aStream, which defines myself." |
2698 "append an expression on aStream, which defines myself." |
2628 |
2699 |
2629 ^ self basicFileOutDefinitionOn:aStream withNameSpace:false |
2700 ^ self basicFileOutDefinitionOn:aStream withNameSpace:true |
2630 |
2701 |
2631 "Modified: 4.1.1997 / 20:55:18 / cg" |
2702 "Modified: / 04-01-1997 / 20:55:18 / cg" |
2703 "Modified: / 04-02-2014 / 16:49:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
2632 ! |
2704 ! |
2633 |
2705 |
2634 fileOutIn:aDirectoryName |
2706 fileOutIn:aDirectoryName |
2635 "create a file 'class.st' consisting of all methods in self in |
2707 "create a file 'class.st' consisting of all methods in self in |
2636 directory aDirectoryName (ignoring any directory setting in |
2708 directory aDirectoryName (ignoring any directory setting in |
4231 "return the revision-ID from which the class was stc-compiled; |
4303 "return the revision-ID from which the class was stc-compiled; |
4232 nil if its an autoloaded or filedIn class. |
4304 nil if its an autoloaded or filedIn class. |
4233 If a classes binary is up-to-date w.r.t. the source repository, |
4305 If a classes binary is up-to-date w.r.t. the source repository, |
4234 the returned string is the same as the one returned by #revision." |
4306 the returned string is the same as the one returned by #revision." |
4235 |
4307 |
4236 |owner info c| |
4308 |owner manager info c| |
4237 |
4309 |
4238 (owner := self owningClass) notNil ifTrue:[^ owner binaryRevision]. |
4310 (owner := self owningClass) notNil ifTrue:[^ owner binaryRevision]. |
4239 |
4311 |
4240 revision notNil ifTrue:[ |
4312 revision notNil ifTrue:[ |
4241 c := revision first. |
4313 c := revision first. |
4242 c == $$ ifTrue:[ |
4314 c == $$ ifTrue:[ |
4243 info := Class revisionInfoFromString:revision. |
4315 manager := self sourceCodeManagerFromBinaryRevision. |
4244 info isNil ifTrue:[^ '0']. |
4316 manager notNil ifTrue:[ |
4245 ^ (info revision) ? '0'. |
4317 info := manager revisionInfoFromString:revision. |
4246 ]. |
4318 ]. |
4247 c isDigit ifFalse:[ |
4319 info isNil ifTrue:[^ '0']. |
4248 ^ '0' |
4320 ^ (info revision) ? '0'. |
4249 ]. |
4321 ]. |
4322 c isDigit ifFalse:[ |
|
4323 ^ '0' |
|
4324 ]. |
|
4250 ]. |
4325 ]. |
4251 |
4326 |
4252 ^ revision |
4327 ^ revision |
4253 |
4328 |
4254 " |
4329 " |
4260 to find all classes which are not up-to-date: |
4335 to find all classes which are not up-to-date: |
4261 |
4336 |
4262 |classes| |
4337 |classes| |
4263 |
4338 |
4264 classes := Smalltalk allClasses |
4339 classes := Smalltalk allClasses |
4265 select:[:cls | cls binaryRevision notNil and:[cls binaryRevision ~= cls revision]]. |
4340 select:[:cls | cls binaryRevision notNil and:[cls binaryRevision ~= cls revision]]. |
4266 SystemBrowser browseClasses:classes title:'classes which are not up-to-date' |
4341 SystemBrowser browseClasses:classes title:'classes which are not up-to-date' |
4267 " |
4342 " |
4268 |
4343 |
4269 "Created: / 07-12-1995 / 10:58:47 / cg" |
4344 "Created: / 07-12-1995 / 10:58:47 / cg" |
4270 "Modified: / 01-04-1997 / 23:33:01 / stefan" |
4345 "Modified: / 01-04-1997 / 23:33:01 / stefan" |
4271 "Modified: / 22-10-2008 / 20:37:05 / cg" |
4346 "Modified: / 22-10-2008 / 20:37:05 / cg" |
4347 "Modified: / 23-01-2012 / 19:38:50 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
4272 ! |
4348 ! |
4273 |
4349 |
4274 binaryRevisionString |
4350 binaryRevisionString |
4275 "return the revision-ID from which the class was stc-compiled; |
4351 "return the revision-ID from which the class was stc-compiled; |
4276 nil if its an autoloaded or filedIn class. |
4352 nil if its an autoloaded or filedIn class. |
4322 or the fallBack (for backward compatibility)" |
4398 or the fallBack (for backward compatibility)" |
4323 |
4399 |
4324 |owner| |
4400 |owner| |
4325 |
4401 |
4326 (owner := self owningClass) notNil ifTrue:[^ owner findVersionMethod]. |
4402 (owner := self owningClass) notNil ifTrue:[^ owner findVersionMethod]. |
4327 ^ self findVersionMethodOfManager:self sourceCodeManager |
4403 ^ self findVersionMethodOfManager:self sourceCodeManagerFromBinaryRevision |
4328 |
4404 |
4329 " |
4405 " |
4330 Smalltalk allClassesDo:[:cls | |
4406 Smalltalk allClassesDo:[:cls | |
4331 Transcript show:cls name; show:' -> '; showCR:cls findVersionMethod |
4407 Transcript show:cls name; show:' -> '; showCR:cls findVersionMethod |
4332 ]. |
4408 ]. |
4333 |
4409 |
4334 Number findVersionMethod |
4410 Number findVersionMethod |
4335 FileDirectory findVersionMethod |
4411 FileDirectory findVersionMethod |
4336 Metaclass findVersionMethod |
4412 Metaclass findVersionMethod |
4337 Class findVersionMethod |
4413 Class findVersionMethod |
4338 " |
4414 " |
4339 |
4415 |
4340 "Modified: / 19-04-2011 / 13:30:42 / cg" |
4416 "Modified: / 19-04-2011 / 13:30:42 / cg" |
4417 "Modified: / 19-07-2013 / 22:11:37 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
4341 ! |
4418 ! |
4342 |
4419 |
4343 findVersionMethodOfManager:aSourceCodemanagerOrNil |
4420 findVersionMethodOfManager:aSourceCodemanagerOrNil |
4344 "{ Pragma: +optSpace }" |
4421 "{ Pragma: +optSpace }" |
4345 |
4422 |
4796 time - the time when the logical revision was checked in |
4873 time - the time when the logical revision was checked in |
4797 fileName - the classes source file name |
4874 fileName - the classes source file name |
4798 repositoryPath - the classes source container |
4875 repositoryPath - the classes source container |
4799 " |
4876 " |
4800 |
4877 |
4801 ^ self revisionInfoOfManager:self sourceCodeManager |
4878 ^ self revisionInfoOfManager:self sourceCodeManagerFromBinaryRevision |
4802 |
4879 |
4803 " |
4880 " |
4804 Object revisionString |
4881 Object revisionString |
4805 Object revisionInfo |
4882 Object revisionInfo |
4806 Image revisionInfo |
4883 Image revisionInfo |
5049 "/ |
5126 "/ |
5050 "/ if there is no SourceCodeManager, |
5127 "/ if there is no SourceCodeManager, |
5051 "/ or TryLocalSourceFirst is true, |
5128 "/ or TryLocalSourceFirst is true, |
5052 "/ look in standard places first |
5129 "/ look in standard places first |
5053 "/ |
5130 "/ |
5054 ((sourceCodeManager := self sourceCodeManager) isNil |
5131 "JV@2011-12-08: |
5055 or:[TryLocalSourceFirst == true]) ifTrue:[ |
5132 (i) first check TryLocalSourceFirst, this avoids useless call to |
5056 sourceStream := self localSourceStreamFor:source. |
5133 #sourceCodeManagerFromBinaryRevision when TryLocalSourceFirst is |
5057 ]. |
5134 set (for whatever reason) |
5135 (ii) do NOT ask source code manager during system startup - source code |
|
5136 managers are not configured anyway!! Also, avoids hangups during |
|
5137 startup when CVSROOT is set but server is unreacheable. |
|
5138 CAVEAT: When somebody modifies the code after compilation and methods |
|
5139 are recompiled during startup (for whatever reason), a bad code may |
|
5140 used, compilation may fail. However, it may happen anyway as SCM's |
|
5141 are not yet configured so the system may use wrong one. Moreover, |
|
5142 the source from which the class is compiled may not be the one in |
|
5143 repository. I (JV) think this is a good, less confusing compromise. |
|
5144 " |
|
5145 (TryLocalSourceFirst == true |
|
5146 or:[Smalltalk isInitialized not |
|
5147 or: [(sourceCodeManager := self sourceCodeManagerFromBinaryRevision) isNil]]) |
|
5148 ifTrue:[ |
|
5149 sourceStream := self localSourceStreamFor:source. |
|
5150 ]. |
|
5058 |
5151 |
5059 sourceStream isNil ifTrue:[ |
5152 sourceStream isNil ifTrue:[ |
5060 "/ mhmh - still no source file. |
5153 "/ mhmh - still no source file. |
5061 "/ If there is a SourceCodeManager, ask it to aquire the |
5154 "/ If there is a SourceCodeManager, ask it to aquire the |
5062 "/ the source for my class, and return an open stream on it. |
5155 "/ the source for my class, and return an open stream on it. |
5063 "/ if that one does not know about the source, look in |
5156 "/ if that one does not know about the source, look in |
5064 "/ standard places |
5157 "/ standard places |
5065 |
5158 |
5066 sourceCodeManager notNil ifTrue:[ |
5159 sourceCodeManager notNil ifTrue:[ |
5067 classFilename ~= source ifTrue:[ |
5160 classFilename ~= source ifTrue:[ |
5068 package notNil ifTrue:[ |
5161 package notNil ifTrue:[ |
5069 sep := package indexOfAny:'/\:'. |
5162 sep := package indexOfAny:'/\:'. |
5070 sep ~~ 0 ifTrue:[ |
5163 sep ~~ 0 ifTrue:[ |
5071 mod := package copyTo:sep - 1. |
5164 mod := package copyTo:sep - 1. |
5072 dir := package copyFrom:sep + 1. |
5165 dir := package copyFrom:sep + 1. |
5073 sourceStream := sourceCodeManager streamForClass:nil fileName:source revision:(self binaryRevision) directory:dir module:mod cache:true. |
5166 sourceStream := sourceCodeManager streamForClass:nil fileName:source revision:(self binaryRevision) directory:dir module:mod cache:true. |
5074 ] |
5167 ] |
5075 ]. |
5168 ]. |
5076 ]. |
5169 ]. |
5077 sourceStream isNil ifTrue:[ |
5170 sourceStream isNil ifTrue:[ |
5078 classFilename isNil ifTrue:[ |
5171 classFilename isNil ifTrue:[ |
5079 guessedFileName := (Smalltalk fileNameForClass:self) , '.st'. |
5172 guessedFileName := (Smalltalk fileNameForClass:self) , '.st'. |
5080 ]. |
5173 ]. |
5081 source asFilename baseName = (classFilename ? guessedFileName) asFilename baseName ifTrue:[ |
5174 source asFilename baseName = (classFilename ? guessedFileName) asFilename baseName ifTrue:[ |
5082 sourceStream := sourceCodeManager getSourceStreamFor:self. |
5175 sourceStream := sourceCodeManager getSourceStreamFor:self. |
5083 ] |
5176 ] |
5084 ]. |
5177 ]. |
5085 sourceStream notNil ifTrue:[ |
5178 sourceStream notNil ifTrue:[ |
5086 (self validateSourceStream:sourceStream) ifFalse:[ |
5179 (self validateSourceStream:sourceStream) ifFalse:[ |
5087 ('Class [info]: repositories source for "%1" is invalid.' bindWith:self theNonMetaclass name) errorPrintCR. |
5180 ('Class [info]: repositories source for "%1" is invalid.' bindWith:self theNonMetaclass name) errorPrintCR. |
5088 sourceStream close. |
5181 sourceStream close. |
5089 sourceStream := nil |
5182 sourceStream := nil |
5090 ] ifTrue:[ |
5183 ] ifTrue:[ |
5091 validated := true. |
5184 validated := true. |
5092 ]. |
5185 ]. |
5093 ]. |
5186 ]. |
5094 ] |
5187 ] |
5095 ]. |
5188 ]. |
5096 |
5189 |
5097 sourceStream isNil ifTrue:[ |
5190 sourceStream isNil ifTrue:[ |
5098 "/ |
5191 "/ |
5099 "/ hard case - there is no source file for this class |
5192 "/ hard case - there is no source file for this class |
5100 "/ (in the source-dir-path). |
5193 "/ (in the source-dir-path). |
5101 "/ |
5194 "/ |
5102 |
5195 |
5103 "/ |
5196 "/ |
5104 "/ look if my binary is from a dynamically loaded module, |
5197 "/ look if my binary is from a dynamically loaded module, |
5105 "/ and, if so, look in the modules directory for the |
5198 "/ and, if so, look in the modules directory for the |
5106 "/ source file. |
5199 "/ source file. |
5107 "/ |
5200 "/ |
5108 ObjectFileLoader notNil ifTrue:[ |
5201 ObjectFileLoader notNil ifTrue:[ |
5109 ObjectFileLoader loadedObjectHandlesDo:[:h | |
5202 ObjectFileLoader loadedObjectHandlesDo:[:h | |
5110 |f classes| |
5203 |f classes| |
5111 |
5204 |
5112 sourceStream isNil ifTrue:[ |
5205 sourceStream isNil ifTrue:[ |
5113 (classes := h classes) notEmptyOrNil ifTrue:[ |
5206 (classes := h classes) notEmptyOrNil ifTrue:[ |
5114 (classes includes:self) ifTrue:[ |
5207 (classes includes:self) ifTrue:[ |
5115 f := h pathName. |
5208 f := h pathName. |
5116 f := f asFilename directory. |
5209 f := f asFilename directory. |
5117 f := f construct:source. |
5210 f := f construct:source. |
5118 f exists ifTrue:[ |
5211 f exists ifTrue:[ |
5119 sourceStream := f readStreamOrNil. |
5212 sourceStream := f readStreamOrNil. |
5120 ]. |
5213 ]. |
5121 ]. |
5214 ]. |
5122 ]. |
5215 ]. |
5123 ] |
5216 ] |
5124 ]. |
5217 ]. |
5125 ]. |
5218 ]. |
5126 ]. |
5219 ]. |
5127 |
5220 |
5128 "/ |
5221 "/ |
5129 "/ try along sourcePath |
5222 "/ try along sourcePath |
5130 "/ |
5223 "/ |
5131 sourceStream isNil ifTrue:[ |
5224 sourceStream isNil ifTrue:[ |
5132 sourceStream := self localSourceStreamFor:source. |
5225 sourceStream := self localSourceStreamFor:source. |
5133 ]. |
5226 ]. |
5134 |
5227 |
5135 "/ |
5228 "/ |
5136 "/ final chance: try current directory |
5229 "/ final chance: try current directory |
5137 "/ |
5230 "/ |
5138 sourceStream isNil ifTrue:[ |
5231 sourceStream isNil ifTrue:[ |
5139 sourceStream := source asFilename readStreamOrNil. |
5232 sourceStream := source asFilename readStreamOrNil. |
5140 ]. |
5233 ]. |
5141 |
5234 |
5142 (sourceStream notNil and:[validated not]) ifTrue:[ |
5235 (sourceStream notNil and:[validated not]) ifTrue:[ |
5143 (self validateSourceStream:sourceStream) ifFalse:[ |
5236 (self validateSourceStream:sourceStream) ifFalse:[ |
5144 ('Class [warning]: source for "%1" is invalid or stripped. Take care.' bindWith:self theNonMetaclass name) errorPrintCR. |
5237 ('Class [warning]: source for "%1" is invalid or stripped. Take care.' bindWith:self theNonMetaclass name) errorPrintCR. |
5145 sourceStream close. |
5238 sourceStream close. |
5146 sourceStream := nil |
5239 sourceStream := nil |
5147 ]. |
5240 ]. |
5148 ]. |
5241 ]. |
5149 "/ (sourceStream notNil and:[sourceStream isFileStream]) ifTrue:[ |
5242 "/ (sourceStream notNil and:[sourceStream isFileStream]) ifTrue:[ |
5150 "/ guessedFileName notNil ifTrue:[ |
5243 "/ guessedFileName notNil ifTrue:[ |
5151 "/ self setClassFilename:(aStream pathName asFilename baseName). |
5244 "/ self setClassFilename:(aStream pathName asFilename baseName). |
5152 "/ ] |
5245 "/ ] |
5157 Object sourceStream |
5250 Object sourceStream |
5158 Clock sourceStream |
5251 Clock sourceStream |
5159 Autoload sourceStream |
5252 Autoload sourceStream |
5160 " |
5253 " |
5161 |
5254 |
5162 "Created: / 10.11.1995 / 21:05:13 / cg" |
5255 "Created: / 10-11-1995 / 21:05:13 / cg" |
5163 "Modified: / 22.4.1998 / 19:20:50 / ca" |
5256 "Modified: / 22-04-1998 / 19:20:50 / ca" |
5164 "Modified: / 5.11.2001 / 16:36:30 / cg" |
5257 "Modified: / 05-11-2001 / 16:36:30 / cg" |
5258 "Modified: / 08-12-2011 / 19:16:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
5165 ! |
5259 ! |
5166 |
5260 |
5167 updateVersionMethodFor:newRevisionString |
5261 updateVersionMethodFor:newRevisionString |
5168 "{ Pragma: +optSpace }" |
5262 "{ Pragma: +optSpace }" |
5169 |
5263 |
5551 ! ! |
5645 ! ! |
5552 |
5646 |
5553 !Class class methodsFor:'documentation'! |
5647 !Class class methodsFor:'documentation'! |
5554 |
5648 |
5555 version |
5649 version |
5556 ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.632 2013-11-21 15:02:57 stefan Exp $' |
5650 ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.633 2014-02-05 17:12:55 cg Exp $' |
5557 ! |
5651 ! |
5558 |
5652 |
5559 version_CVS |
5653 version_CVS |
5560 ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.632 2013-11-21 15:02:57 stefan Exp $' |
5654 ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.633 2014-02-05 17:12:55 cg Exp $' |
5561 ! |
5655 ! |
5562 |
5656 |
5563 version_SVN |
5657 version_SVN |
5564 ^ '$ Id: Class.st 10643 2011-06-08 21:53:07Z vranyj1 $' |
5658 ^ '$ Id: Class.st 10643 2011-06-08 21:53:07Z vranyj1 $' |
5565 ! ! |
5659 ! ! |