{"push_id":731259078,"size":16,"distinct_size":16,"ref":"refs/heads/master","head":"b897b6bfa01898292615385545a24d033f368bad","before":"87a5e47c4e55c86ab2dcc867c9f936096ba08139","commits":[{"sha":"99a6730c8d75a93e5cc3f892bdf443f87ca0e6a6","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"Include JUnit as part of Testbench module (BaseMpsTest uses JUnit annotations)","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/99a6730c8d75a93e5cc3f892bdf443f87ca0e6a6"},{"sha":"52c40c633112df1f92883d9f2202a509933883ac","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"Java stubs: respect precedence of models of the same module over models from dependencies when resolving package by name. Towars SModelId for package without SModuleId","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/52c40c633112df1f92883d9f2202a509933883ac"},{"sha":"e9ef14765b54874107e5cfc1fab406cb726a1e40","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"Can't access Environment class from BaseMpsTest due to classes from j.m.tool.environment solution not part of Testbench solution (reference from BaseMpsTest to Environment is broken). Since it's java_stub, dependency from TestBench to the solution won't help, thus made classses of the solution part of Testbench. There's j.m.t.environment package in MPS.Platform, which likely shall become part of TestBench, or whole j.m.t.environment package shall move to MPS.Platform.","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/e9ef14765b54874107e5cfc1fab406cb726a1e40"},{"sha":"58b3f110cae3a53f9598d284767cf72127c2596a","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"ModuleReference: drop uses of deprecated cons with single arg, module name, demand module id. Drop deprecated and unused code. Towards SModelId for java package not to include module id.","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/58b3f110cae3a53f9598d284767cf72127c2596a"},{"sha":"34dc73b8f13d718bbbc12b1bf365653290ca7f65","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"CopyPasteUtil: use SLanguage instead of SModuleReference in AddRequiredImportsDialog","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/34dc73b8f13d718bbbc12b1bf365653290ca7f65"},{"sha":"27e7c88156d897efedf828e1cdcd72503977dbcc","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"ModuleReference: drop last use of the cons without id, deprecate it the right way (with explanation). Towards SModelId for java package not to include module id","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/27e7c88156d897efedf828e1cdcd72503977dbcc"},{"sha":"25bcb8fd64e869c0c60e888e4554ce70ac91189f","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"Java stubs: lazy loading. First, populate model with top classes, later fill them with members. First of all, no parsing of classes nobody looks at. Second of all, I'd like to have references from java stubs resolved with statics as much as possible, and two-step model loading helps to address this at least for references to top classifiers.","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/25bcb8fd64e869c0c60e888e4554ce70ac91189f"},{"sha":"c7d4063d88d88fea35a4d935d0417a4094f8ff18","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"Java stubs: lazy loading. Refactor to use top classifier hint in reference factory to find best package match. Respect visibility of inner class (as it specified in the declaring classifier) - fixes the defect that protected inner classes were shown with public visibility(e.g. ReachableClassifiersScope.ClassifierReferenceInfoResolver), and private inner classes were shown with  'package-local' (e.g. ThreadWatcher.ThreadState)","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/c7d4063d88d88fea35a4d935d0417a4094f8ff18"},{"sha":"f3cdb9cf5640950d8da06acb9fe46bea43bfa337","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"IdeaPlugin: MPSConfigurationBean changed to be true configuration bean (and SolutionDescriptor factory), rather than a whim proxy to populate SolutionDescriptor.\nDetails: setUsedLanguage invoked from loadState() failed to access PersistenceFacade, as MPS platform is not yet ready the moment we configure the bean. Thus, we postponed use of MPS stuff to the moment SolutionDescriptor is actually needed, and we could expect MPS platform ready.","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/f3cdb9cf5640950d8da06acb9fe46bea43bfa337"},{"sha":"0b81e4715039e4b3d232d81212eaf14d817f5942","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"SModel: change update mode to be a lock, rather than flag, to facilitate block in getNode(), which helps to wait while update mode is over. Multiple threads, trying to find node by id, trigger full model load, and while one of them updates id map by registering new nodes, others may fail due to concurrent modification of the map.","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/0b81e4715039e4b3d232d81212eaf14d817f5942"},{"sha":"5ed7de8f210568abac917a18d34ecbaa63a6bfdf","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"TextGen: debug tests - provide more details about exception happened","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/5ed7de8f210568abac917a18d34ecbaa63a6bfdf"},{"sha":"1c7ae140a72c17effff705163101efc47ced627d","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"Java stubs: lazy loading. Do not replace nodes in the model in-place, instead, prepare a new complete model and insert prepared child hierarchies. Present approach didn't work for two models with cross-references, being loaded from parallel threads - got deadlock on update flag in getNode().\nInterfaceSNode and LazySNode, together with ModelLoader aka ParialModelUpdateFacility) moved out of [persistence] to [kernel] (on their way to [smodel] to reuse the code.","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/1c7ae140a72c17effff705163101efc47ced627d"},{"sha":"cd1d8fbf9b0ff868c0be1f719577268177259e28","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"Java stubs: lazy loading. Collect models to import and add them rather than add import in-place with a cast (true factory, creates but doesn't modify). Deal with constraint of write access when changing imports for partially loaded model","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/cd1d8fbf9b0ff868c0be1f719577268177259e28"},{"sha":"e80f2ed18ce83182bf86bacfa40c04d27eb2d95f","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"Java stubs: lazy loading. guard against nested load attempts (due to model.getNode()). Can't use update mode for this as it would block loading of models with cross-references","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/e80f2ed18ce83182bf86bacfa40c04d27eb2d95f"},{"sha":"ede453c24436086242dd51bf70968c3486fea475","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"Java stubs: lazy loading. avoid model.getNode() calls from within update mode not to get into deadlock (two models in parallel reads simultaneously updating and resolving references to each other). All we need is to check presence of top classifier, without need to force full load, thus, we just cache known classifiers and proceed gracefully if no match found.","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/ede453c24436086242dd51bf70968c3486fea475"},{"sha":"b897b6bfa01898292615385545a24d033f368bad","author":{"email":"88126b5a3d76efaf7d6ea66ccd7277860f253774@gmail.com","name":"Artem Tikhomirov"},"message":"Java stubs: lazy loading. Honest update mode lock on model load. Code within boundaries of update mode shall not trigger load of any other (stub) model, as it would lead to deadlock. There may be nested load calls from same thread (child attach/detach tries to load model fully), hence we keep myIsLoadInProgress flag in addition to mode lock.","distinct":true,"url":"https://api.github.com/repos/JetBrains/MPS/commits/b897b6bfa01898292615385545a24d033f368bad"}]}