« first day (1715 days earlier)      last day (1465 days later) » 

12:01 AM
RELOAD!
[rubberduck-vba/Rubberduck] 5 opened issues. 15 issue comments.
[Zomis/Server2] 2 commits. 81 additions. 81 deletions.
> Version 2.4.0.4533
OS: Microsoft Windows NT 6.1.7601 Service Pack 1, x64
Host Product: Microsoft Office 2013 x86
Host Version: 15.0.5093.1000
Host Executable: EXCEL.EXE

**Description**
Context menu attempts to be displayed when right click is used on grouping header before any item is selected.

**To Reproduce**
Steps to reproduce the behavior:
1. Have code that will show for as an inspection.
2. Right click on a grouping header. Tiny context menu attempts to show but nothing is a
 
12:21 AM
Oh how I've missed using RD.
@Vogel612 were you the one that set up the git bug report for issues? I'm really liking it.
 
ya that was me... that's a github thing tho
 
@Duga @Comintern Is it worth opening a separate issue for the collapsed header context menu?
 
That's the same issue.
 
[rubberduck-vba/Rubberduck] build for commit c2d3547e on unknown branch: AppVeyor build succeeded
 
12:36 AM
Mkay, just double checking.
 
It has to do with the context menu not being in the same visual tree as the grid, and it's annoying AF.
 
@Duga Fixed typo. It was annoying.
 
FML. I'm bad with words.
 
lol not a dig, just an observation :-)
 
Didn't take it as one aimed at me.
It's rough since I try to use words properly.
 
> I also like the idea.

The actual rewriting in the code panes will be easy to handle via the `IAnnotationUpdater`.

One correction though: there are multiple commands taking multiple strings as input, e.g. `ModuleAttributeAnnotation`. In that case, even the number of arguments is not fixed. (BTW, you can have arbitrarily many of these on the same module.)
 
 
3 hours later…
3:50 AM
:click: git CLI is making a lot more sense.
 
4:07 AM
Oh.... My.... God....
Why are you "wrapping" a worksheet behavior in a class like that? A worksheet is already a class. TBH, I'm surprised this isn't crashing Excel. When you show the form vbModeless, it separates it from the Excel message pump - that means you have a whole bunch of asynchronous events firing from Excel when you start messing around with it's objects inside of a class constructor. It may be best to describe what you want to accomplish, scrap this access violation waiting to happen, and rethink the architecture. — Comintern 20 secs ago
 
FML, how did I get back up to 2 pages of assigned issues again?
 
[rubberduck-vba/Rubberduck] build for commit 355d4598 on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
4:52 AM
Sonofabitch.
@Duga WTF? That passes locally.
 
 
1 hour later…
6:21 AM
0
Q: Merge info from two sheets info one list

Mr CI've created a code that works, but takes time to run. Is there any way of making this code work in a more efficient way? In short terms I want to: make a new copy of sheet 1 and 2 Select the row with lowest value in sheet 1 Paste this row in sheet 3, and select item-number, rownumber and OP-...

 
 
3 hours later…
9:48 AM
> This PR is no longer WIP. I would appreciate any feedback.
In particular, I would be interested to know whether I overlooked something important in the redesign of the `MoveCloserToUsageRefactoring`.
 
@Hosch250 Since you are thinking about a microservice architecture, Release It! might be an interesting read for you.
 
 
2 hours later…
1:07 PM
> [Ref](https://github.com/rubberduck-vba/Rubberduck/pull/4769#discussion_r257172372)

In addition to the issues highlighted in the OP, we should consider cleaning up the key names. Because they came from a single huge resx originally, they had a prefix in the key name which now look very redundant now that we have a specialized .resx file. Those should be stripped out to make the already long names somewhat shorter.
 
1:58 PM
@Duga Actually it's R# being dumb. I always have to "enable C# 7.{1|2} feature" everytime I open up a file that has such feature to turn off the misleading red squiggles. It seems to not remember the setting and does it on a per-file basis.
 
@this Where do I find that setting?
 
I'd like to know that myself. Currently, when I see such red squiggle, I just use the context menu to enable the language feature. But that only works on a per-file basis.
 
@this I've been trying really hard to ignore it, but failing.
 
IKR? Red squiggles sets off the mental bells in my head.
Apparently there's a way but darned if I can find that menu....
oh, wow, not intuitive at all
so right-click a project, select Edit Project Item Properties which then shows that menu in the screenshot.
and for each project? Really?
OTOH, there's Default which should follow the project, which is correctly set to 7.2...
 
2:22 PM
Just a thought - are there any R# project configuration files that we should include in the repo itself?
The only potential problem I could see is if they're version specific, but I have not idea what the implementation is like.
 
@Comintern Mat has said he doesn't want to include user tooling in the repo.
I suggested it before.
 
Fair enough. It would potentially introduce contributor configuration issues (why I mentioned versioning).
Ironically though, we've had numerous issues opened requesting RD do the same thing.
 
I kind of can see a "recommended configuration" which would be manually deployed but I'm not sure how much benefit it would bring to the table.
 
3:18 PM
Holy crap
i just discovered something cool
 
If you have vs2010 installed for a legacy project
you can use the build tools in 2017
so in effect, i dont have to use the older interface to build old projects
wew!
 
Does that also mean that you can use the COM shim wizard in VS2017? Or do you still have to use it from VS2010?
 
i have no idea
i opened a legacy project and it told me i needed the vs2010 build tools, or i could update to the 2017 one
i figure being able to compile it is pretty important
 
3:27 PM
@M.Doerner I don't think so - wizard is more like an addin or extension.
 
i know we have VS2010 pro sitting around somewhere, and our old C++ guy was using it
 
since 2010, they stopped tying the solution file to a specific version of Visual Studio, AIUI.
 
well thats pretty sweet
 
yeah, they realized it was just a big mess to tie into a specific version especially that there are much more collaboration, which may not be on the same version.
 
well, its pretty sweet that they did that
though it sucks to have to try to find older build tools
if we didnt have the older version i could install...
well. it would be nice to be able to install older build tool versions if you have a valid licence
and by valid i mean at least a pro licence
cuz otherwise its pretty dang impossible to find a lot of it
 
3:43 PM
> Ref #4794 - that more or less addresses the point 3.
 
3:57 PM
FWIW - I would like 4784 & 4699 to be looked over; they should be done unless I missed something else.
 
Didn't the build tools also come with VS2010 express?
 
I think only a subset, IIRC.
 
> I disagree if I understand the issue being raised; the vanilla VBE does support copying a module from one project to another:



Clicking and dragging a module in the VBE Project Explorer from one project to another will indeed accomplish a Copy/Paste from one project to another. I wish CE had that capability.



Admittedly, it is a single module at a time, but still it can be done.



From: bclothier <notifications@github.com>
Sent: Thursday, February 14, 2019 6:53 AM
To: rubberduck-vba/R
> I disagree if I understand the issue being raised; the vanilla VBE does support copying a module from one project to another:

Clicking and dragging a module in the VBE Project Explorer from one project to another will indeed accomplish a Copy/Paste from one project to another. I wish CE had that capability.

Admittedly, it is a single module at a time, but still it can be done.
> That's cool but what about *within* a project?

TBH, I have to say even though I was told before that DnD works on PE, I still don't think to try and DnD with PE.
 
@Duga Wait, we're talking about within a project there? What's the use case?
We could name the command CreateShadowDeclarationsCommand.
 
In my case, I was making multiple implementation of an interface
so I wanted to copy from implementation A, the modify to build implementation B
I did comment my hesistancy in the OP....
 
4:13 PM
VBA class inheritance: ctrl-c, ctrl-v
 
which I commented in the OP....
 
This is why I need to read things more closely.
 
TBH I am still having mixed feeling about the idea anyway - I don't want encourage copy-pasta in a language that apparently lends itself to .... copy-pasta.
 
Although if you're doing that in VBA, wouldn't that just be a hint that you should be using composition?
 
Possibly - in my scenario, I just wanted to keep the internal state while changing the implementation
 
4:17 PM
What about a refactoring that extracted both an interface and a new class from a set of methods\properties?
Then made the class implement them.
 
hmm then that exposes the internal state, doesn't it?
the whole thing comes from the fact there's no class inheritance
 
How so? I'm thinking more along the lines of split a class into 2 classes so you can composite the "extracted" implementation.
 
so if I provide an interface, then I have to pass it in, and that just feel wrong when it's basically an internal state for functionality.
 
Why else you you need a copy though? It doesn't seem very DRY.
 
Duck check: for unit tests should assignment of a property be part of testing? If so, should you check every property assignment?
 
4:23 PM
Is Regex Search/Replace supposed to be doing something?
 
Because I originally was thinking about keeping the internal state -- the module level variables -- private. I would actually end up redoing all the public stubs and revise some of the variables but keep the setup/teardown within the class Initialize/Terminate events.
 
@IvenBach Depends. What you do mean by "assignment of a property"? Like the Get is correct given a Let?
 
Your argument is that I'd extract that into its own class, then new it up in the original class' Initialize event
 
@this You don't have to expose the internal class.
 
No, I don't but when you're working with only one project, that hardly makes a difference.
 
4:26 PM
Hmmm...
 
I think that's the problem basically - I'm trying too hard to keep everything private because otherwise, we see too much in the single project.
(and it's not practical to put it in other projects - distribution issues)
 
Usually I'll wrap the interface implementations anyway - that way the implementing object can be used without casting.
I do see where you're coming from though.
 
Also one more consideration - it might start out as a copy'n'paste but over time it may progressively diverge
 
@Comintern testing a get accessor of a VBA class to ensure it saves the backing field.
 
e.g. implementation B has some extra considerations that requires changes to the internal state. I wouldn't want to change the shared "state" class for that.
 
4:28 PM
@IvenBach If your Get is saving anything, you're doing it wrong. ;-)
 
@IvenBach if your get accessor saves the backing field, you're doing it wrong ;-)
 
LOL
 
@Comintern fml
 
Thinking about it I’d sat it’d me testing both the get and let property
 
> I guess I am a bit ambivalent about copying within a project. It would seem to me to suggest that if it is all that useful to “copy” everything in a module (within a project) it is likely a better candidate for refactoring and generalization of the common elements.



There are many times that I want a “toolbox” of stuff in a project. Being able to copy from one to another in the PE is something I use reasonably often. But then, I am nowhere near as sophisticated in my development as others a
 
4:29 PM
I’m so terribad with words.
 
> I guess I am a bit ambivalent about copying within a project. It would seem to me to suggest that if it is all that useful to “copy” everything in a module (within a project) it is likely a better candidate for refactoring and generalization of the common elements.

There are many times that I want a “toolbox” of stuff in a project. Being able to copy from one to another in the PE is something I use reasonably often. But then, I am nowhere near as sophisticated in my development as others an
 
@Duga You're not the only one ambivalent.
 
I would hope that you'd fail a bunch of other tests if your properties weren't connected to the backing fields correctly. About the only thing I'd test is if they were initialized in the ctor.
 
#NeedMoreThinks
 
@Comintern since VBA doesn’t have ctor check that they are initialized to anything when the class is instantiated?
 
4:35 PM
No, more like because it's on you to implement the Class_initialize to do this.
 
don't pretend that VBA has ctors, BTW.
It basically has none.
 
test a factory method; testing getters/setters strikes me as pursuing 100% coverage, which is arguably useless
 
Well, that's oversimplification.
 
Uh. Everything has a ctor. You just can't override it in VBA.
 
4:36 PM
^ better
 
Although you're right, I fell into C terminology there.
 
every VBA class has a default/parameterless constructor that fires an Initialize event :)
 
for a second i had to think about what the heck a ctor is
 
The reason I said to not call it a ctor is mainly because it doesn't work like one, even with Class_Initialize
 
till i realized you guys ment constructor
or... at lesat i think you mean constructor
 
4:37 PM
Yes
 
@KySoto No, we're talking about centaurs. We just suck at abbreviating and spelling.
 
oh, man, thanks for the clarification @Comintern
 
Hmm. I was trying to explain why Initialize isn't like a ctor and I now need a sanity check -- in C# ctor, we can call stuff outside the class being constructed, right?
 
How up are you guys on C++?
cuz the guy who wrote this used a lot of m_<rest of variable name> on variables
 
4:41 PM
I can get you null pointers and memory leaks.
 
just curious about that convention
 
the way I see it, a VBA class inherently inherits a base ClassModule class, whose default ctor fires an Initialize event, and whose destructor fires a Terminate event, that the inherting class (i.e. the user code) can handle - Class_Activate is an event handler, not a construtor.
could be wrong
but feels right
 
Hmm, the guy must be old school. m_ is a HN for module.
@MathieuGuindon That is basically correct. However, the other thing is that the instance being constructed isn't... available within the event.
 
could be, he was a self taught programmer
one of those really smart a hole engineer types
has the whole 80's glasses look goin on
 
let me see if I can come up w/ an example
 
4:43 PM
quit about 6 years ago
 
Private Sub Class_Initialize()
    Debug.Print TypeName(Me)
End Sub
 
@this I thought it stood for "member"
 
Set foo = New Class1
Class1
 
member makes sense
 
@this what do you mean?
 
4:44 PM
No, not that.
 
@Comintern me too
 
@this Looking at it another way though, you could conceptualize it as the base ctor having run first, and the Class_Initialize being the derived constructor. Since VB is single threaded, it will deterministically be the next call after the class is created, so at that point isn't it just semantics?
Although playing devils advocate, you can call DoEvents in Class_Initialize. We should have an inspection for that.
 
I know there were few more examples where the behavior weren't necessarily the expected - Unfortunately, I did not take careful notes when I encountered those. Here's a different example, though:
Class2:
Private WithEvents c As class1

Private Sub c_Load()
    Debug.Print "Loaded"
End Sub

Private Sub Class_Initialize()
    Set c = New class1
End Sub
Class1:
Public Event Load()

Private Sub Class_Initialize()
    RaiseEvent Load
End Sub
^ the Load event won't be caught
So it's not really "fully" constructed.
 
Interesting.
 
There was also a different instance where having errors thrown in the constructor don't always prevent the creation of the object. However, I tested that and in simple scenario, it does work (e.g. the object is not created as expected). But it did happen on one project I worked and they had created a "singleton" class that did not actually work the way they thought (the object gets created anyway)
it might have had more to do with the error handling stacking, though.
 
4:57 PM
That might be more of an issue of the order in which the Set c = New Class1 runs vis-a-vis the WithEvents. Doesn't New Class1 have to return there before the assignment to c happens?
That means the event source isn't hooked up until the call to New fully returns.
There simply isn't a listener connected until after Class_Initialize has completed.
Apparently we need an inspection for that too.
ClassInitializerInspections is rapidly wanting to be in a folder...
 

« first day (1715 days earlier)      last day (1465 days later) »