Merge jv
authorHG Automerge
Wed, 01 Feb 2017 11:29:42 +0000
branchjv
changeset 4115 27e61b5abc1e
parent 4106 701025567fad (current diff)
parent 4103 2536fe3291dd (diff)
child 4205 e32b9c4d3190
Merge
ByteCodeCompiler.st
Explainer.st
Parser.st
--- a/ByteCodeCompiler.st	Wed Jan 25 17:18:07 2017 +0000
+++ b/ByteCodeCompiler.st	Wed Feb 01 11:29:42 2017 +0000
@@ -802,7 +802,10 @@
 !
 
 ccCompilationOptions
-    "return the options used with cc compilation"
+    <resource: #obsolete>
+
+    "return the options used with cc compilation.
+     This method remains here for backward compatibility (older script files)"
 
     ^ ParserFlags ccCompilationOptions
 
@@ -814,9 +817,12 @@
 !
 
 ccCompilationOptions:aString
+    <resource: #obsolete>
+    
     "define the compilation options
      to be used when compiling to machine code.
-     These are passed to cc. Can be set from your private.rc file."
+     These are passed to cc. Can be set from your private.rc file.
+     This method remains here for backward compatibility (older script files)"
 
     ParserFlags ccCompilationOptions:aString
 
@@ -831,7 +837,10 @@
 !
 
 ccPath
-    "return the path to (name of) the cc command for incremental method compilation"
+    <resource: #obsolete>
+
+    "return the path to (name of) the cc command for incremental method compilation.
+     This method remains here for backward compatibility (older script files)"
 
     ^ ParserFlags ccPath
 
@@ -847,7 +856,10 @@
 !
 
 ccPath:aPathOrCommandName
-    "set the path to the cc command for incremental method compilation"
+    <resource: #obsolete>
+
+    "set the path to the cc command for incremental method compilation.
+     This method remains here for backward compatibility (older script files)"
 
     ParserFlags ccPath:aPathOrCommandName
 
@@ -863,6 +875,8 @@
 !
 
 stcCompilation
+    <resource: #obsolete>
+
     "return the flag which controls compilation to machine code.
      If #always, methods are always compiled to machine code (which takes
      longer, but provides faster code). If #none, methods are never compiled
@@ -871,7 +885,8 @@
      Anything else lets the compiler compile to bytecode,
      except for methods containing primitive code.
      This can be set from your private.rc file or from a workspace
-     for selective compilation to machine code."
+     for selective compilation to machine code.
+     This method remains here for backward compatibility (older script files)"
 
     ^ ParserFlags stcCompilation
 
@@ -881,6 +896,8 @@
 !
 
 stcCompilation:how
+    <resource: #obsolete>
+
     "set the flag which controls compilation to machine code.
      If #always, methods are always compiled to machine code (which takes
      longer, but provides faster code). If #none, methods are never compiled
@@ -889,7 +906,8 @@
      Anything else lets the compiler compile to bytecode,
      except for methods containing primitive code.
      This can be set from your private.rc file or from a workspace
-     for selective compilation to machine code."
+     for selective compilation to machine code.
+     This method remains here for backward compatibility (older script files)"
 
     |ret|
 
@@ -905,15 +923,21 @@
 !
 
 stcCompilationDefines
-    "return the defines used with stc compilation"
+    <resource: #obsolete>
+
+    "return the defines used with stc compilation.
+     This method remains here for backward compatibility (older script files)"
 
     ^ ParserFlags stcCompilationDefines
 !
 
 stcCompilationDefines:aString
+    <resource: #obsolete>
+
     "define the flags (for example, additional -D defines)
      to be used when compiling to machine code.
-     These are passed to stc. Can be set from your private.rc file."
+     These are passed to stc. Can be set from your private.rc file.
+     This method remains here for backward compatibility (older script files)"
 
     ParserFlags stcCompilationDefines:aString
 
@@ -926,14 +950,20 @@
 !
 
 stcCompilationIncludes
-    "return the includes used with stc compilation"
+    <resource: #obsolete>
+
+    "return the includes used with stc compilation.
+     This method remains here for backward compatibility (older script files)"
 
     ^ ParserFlags stcCompilationIncludes
 !
 
 stcCompilationIncludes:aString
+    <resource: #obsolete>
+
     "define the include directories via additional -I flags.
-     These are passed to stc. Can be set in your private.rc file"
+     These are passed to stc. Can be set in your private.rc file.
+     This method remains here for backward compatibility (older script files)"
 
     ParserFlags stcCompilationIncludes:aString
 
@@ -946,15 +976,21 @@
 !
 
 stcCompilationOptions
-    "return the options used with stc compilation"
+    <resource: #obsolete>
+
+    "return the options used with stc compilation.
+     This method remains here for backward compatibility (older script files)"
 
     ^ ParserFlags stcCompilationOptions
 !
 
 stcCompilationOptions:aString
+    <resource: #obsolete>
+
     "define the compilation options
      to be used when compiling to machine code.
-     These are passed to stc. Can be set from your private.rc file."
+     These are passed to stc. Can be set from your private.rc file.
+     This method remains here for backward compatibility (older script files)"
 
     ParserFlags stcCompilationOptions:aString
 
@@ -964,7 +1000,10 @@
 !
 
 stcModulePath
-    "return the path, where temporary modules are created"
+    <resource: #obsolete>
+
+    "return the path, where temporary modules are created.
+     This method remains here for backward compatibility (older script files)"
 
     ^ ParserFlags stcModulePath
 
@@ -972,10 +1011,13 @@
 !
 
 stcModulePath:aPath
+    <resource: #obsolete>
+
     "set the path to the directory, where temporary modules are created.
      Obsolete; knowledge moved to parserFlags,
      where it is also obsolete now, as this should not be set from the outside,
-     but instead rely totally on the userPreferences."
+     but instead rely totally on the userPreferences.
+     This method remains here for backward compatibility (older script files)"
 
     ParserFlags stcModulePath:aPath
 
@@ -983,7 +1025,10 @@
 !
 
 stcPath
-    "return the path to the stc command, or nil if not found."
+    <resource: #obsolete>
+
+    "return the path to the stc command, or nil if not found.
+     This method remains here for backward compatibility (older script files)"
 
     ^ ParserFlags stcPath
 
@@ -995,7 +1040,10 @@
 !
 
 stcPath:aPath
-    "set the path to the stc command - useful if private stc is wanted"
+    <resource: #obsolete>
+
+    "set the path to the stc command - useful if private stc is wanted.
+     This method remains here for backward compatibility (older script files)"
 
     ParserFlags stcPath:aPath
 
--- a/Explainer.st	Wed Jan 25 17:18:07 2017 +0000
+++ b/Explainer.st	Wed Feb 01 11:29:42 2017 +0000
@@ -1434,11 +1434,27 @@
             commonSuperClass isNil ifTrue:[
                 commonSuperClass := Behavior commonSuperclassOf:listOfImplementingClasses.
             ] .
-            (listOfImplementingClasses includes:commonSuperClass) ifTrue:[
-                (commonSuperClass implements:selector) ifTrue:[
-                    classProvidingComment := commonSuperClass
-                ] ifFalse:[
+
+            ((listOfImplementingClasses includes:commonSuperClass) 
+              and:[ (commonSuperClass implements:selector) ]
+            ) ifTrue:[
+                classProvidingComment := commonSuperClass
+            ] ifFalse:[
+                "/ avoid some obvious misleading pathes...
+                classProvidingComment := { Number . Collection . Stream . View } 
+                                            detect:[:cls | (listOfImplementingClasses includes:cls)
+                                                           or:[cls canUnderstand:selector]  ]
+                                            ifNone:nil.
+                classProvidingComment notNil ifTrue:[
+                    classProvidingComment := classProvidingComment whichClassImplements:selector.
+                ] ifFalse:[    
                     classProvidingComment := firstImplementingClass.
+                    [ 
+                        classProvidingComment superclass notNil
+                        and:[ classProvidingComment superclass implements:selector ]
+                    ] whileTrue:[
+                        classProvidingComment := classProvidingComment superclass
+                    ].
                 ].
             ].
         ].
@@ -1466,11 +1482,10 @@
                     cm := self fetchDescriptionOfMethod:(classProvidingComment compiledMethodAt:selector).
                 ]
             ].    
-            cm notNil ifTrue:[
-                cm := (' %1 says:\' withCRs bindWith:(self asClassLink:classProvidingComment name)),cm
-            ].
         ].
         cm notNil ifTrue:[
+            cm := (' %1 says:\' withCRs bindWith:(self asClassLink:classProvidingComment name)),cm.
+            
             "/ msg := msg,(msg last isSeparator ifTrue:[''] ifFalse:[' ']),cm
             msg := msg,(Character cr),cm
         ].
--- a/ParseWarning.st	Wed Jan 25 17:18:07 2017 +0000
+++ b/ParseWarning.st	Wed Feb 01 11:29:42 2017 +0000
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libcomp' }"
 
+"{ NameSpace: Smalltalk }"
+
 Notification subclass:#ParseWarning
 	instanceVariableNames:'errorMessage startPosition endPosition lineNumber'
 	classVariableNames:''
@@ -68,13 +70,20 @@
     startPosition := something.
 ! !
 
+!ParseWarning methodsFor:'default action'!
+
+defaultResumeValue
+    Logger warning:('Parser Warning: ',(self errorMessage ? self description)).
+    ^ super defaultResumeValue
+! !
+
 !ParseWarning class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/ParseWarning.st,v 1.2 2013-04-03 17:21:41 cg Exp $'
+    ^ '$Header$'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libcomp/ParseWarning.st,v 1.2 2013-04-03 17:21:41 cg Exp $'
+    ^ '$Header$'
 ! !
 
--- a/Parser.st	Wed Jan 25 17:18:07 2017 +0000
+++ b/Parser.st	Wed Feb 01 11:29:42 2017 +0000
@@ -11189,7 +11189,8 @@
         (classToCompileFor notNil
         and:[classToCompileFor isMeta not
         and:[classToCompileFor isBuiltInClass not
-        and:[(parser isDoIt not)]]]) ifTrue:[
+        and:[classToCompileFor theNonMetaclass isSharedPool not
+        and:[(parser isDoIt not)]]]]) ifTrue:[
             list add: #InstanceVariable.
         ].
     ] ifFalse:[
@@ -11202,7 +11203,11 @@
                     list add: #ClassInstanceVariable.
                 ].
             ].
-            list addAll: #( #ClassVariable #PrivateClass ).
+            (classToCompileFor notNil and:[ classToCompileFor theNonMetaclass isSharedPool]) ifTrue:[
+                list addAllFirst: #( #ClassVariable nil ).
+            ] ifFalse:[   
+                list addAll: #( #ClassVariable #PrivateClass ).
+            ]
         ]
     ].