ProjectBrowser.st
changeset 1219 0bcf1df24277
parent 1218 8e2fa160357f
child 1220 998ca027d633
equal deleted inserted replaced
1218:8e2fa160357f 1219:0bcf1df24277
  3708         ]
  3708         ]
  3709     ]
  3709     ]
  3710 !
  3710 !
  3711 
  3711 
  3712 loadProjectCode
  3712 loadProjectCode
  3713     |project filesToLoad methodsFile ns anyPatchClassMissing anyPatches|
  3713     |project filesToLoad methodsFile ns anyPatchClassMissing anyPatches
       
  3714      nMissingSuper prevNMissingSuper|
  3714 
  3715 
  3715     project := self currentProject.
  3716     project := self currentProject.
  3716     ns := project defaultNameSpace.
  3717     ns := project defaultNameSpace.
  3717     ns isSymbol ifTrue:[
  3718     ns isSymbol ifTrue:[
  3718         ns := Namespace name:ns
  3719         ns := Namespace name:ns
  3778         ].
  3779         ].
  3779 
  3780 
  3780         filesToLoad size == 0 ifTrue:[
  3781         filesToLoad size == 0 ifTrue:[
  3781             self information:'Projects code is already loaded.'
  3782             self information:'Projects code is already loaded.'
  3782         ] ifFalse:[
  3783         ] ifFalse:[
  3783             "/ load twice to avoid load-order trouble with superclasses ..
  3784             "/ load as long as superclasses are missing
  3784             2 timesRepeat:[
  3785             "/ (since the load order could be incorrect)
  3785                 Class packageQuerySignal answer:project package asSymbol
  3786             prevNMissingSuper := nil.
  3786                 do:[
  3787             nMissingSuper := 1.
  3787                     filesToLoad do:[:fileToLoad |
  3788             [nMissingSuper > 0 and:[nMissingSuper ~~ prevNMissingSuper]]
  3788                         Smalltalk fileIn:(project directory asFilename construct:fileToLoad) pathName
  3789             whileTrue:[
       
  3790                 nMissingSuper := 0.
       
  3791                 Parser::UndefinedSuperclassError handle:[:ex |
       
  3792                     nMissingSuper := nMissingSuper + 1.
       
  3793                     ex proceed
       
  3794                 ] do:[
       
  3795                     Class packageQuerySignal answer:project package asSymbol
       
  3796                     do:[
       
  3797                         filesToLoad do:[:fileToLoad |
       
  3798                             Smalltalk fileIn:(project directory asFilename construct:fileToLoad) pathName
       
  3799                         ]
  3789                     ]
  3800                     ]
  3790                 ]
  3801                 ].
  3791             ]
  3802                 prevNMissingSuper := nMissingSuper.
       
  3803             ].
  3792         ].
  3804         ].
  3793         project isLoaded:true.
  3805         project isLoaded:true.
  3794         self readAspectsFromProject
  3806         self readAspectsFromProject
  3795     ]
  3807     ]
  3796 !
  3808 !