« first day (2123 days earlier)      last day (1057 days later) » 

12:00 AM
RELOAD!
[banane-io/PDB] 1 closed issue. 1 issue comment.
[Minesweeper] New Users: 55, Games Played: 207, Bombs Used: 142, Moves Performed: 24334
RELOAD!
[rubberduck-vba/Rubberduck] 2 commits. 17 additions. 7 deletions. 7 issue comments
Update README.md

replaced form with static link
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5448?src=pr&el=h1) Report
> :exclamation: No coverage uploaded for pull request head (`paypal-button@52b2bc5`). [Click here to learn what that means](https://docs.codecov.io/docs/error-reference#section-missing-head-commit).
> The diff coverage is `n/a`.
 
12:17 AM
wow 2FA on PayPal is intense... leave the browser tab and your session is gone
#Secure
 
> Link verified. Wording & layout ok?
 
 
2 hours later…
1:55 AM
@MathieuGuindon Achievement Unlocked: . Let me know when it is set up.
 
haha legit lol
 
2:35 AM
The feeling when you get the message: "I messed up a calculation. I fixed it in the file. Go ahead and set it up to run again." When setting-it-up-again is a 3-4 hour tedious process...
 
Yep. I'm still getting paid to set it up and run it though. Not what I want on a Saturday evening though.
 
how can a property have both a Let and Set?
 
You can't. One or the other.
 
then why would i need to have a unit test for that?
 
2:46 AM
Let is assignment for value types and Set is for reference types. AIUI.
If you property is just an assignment you shouldn't need a unit test for that.
 
"Moreover, I am missing a few test cases. What about fields? What about a property with Get, Let, and Set?'
 
If you have a guard clause as part of the property then you should be testing that gaurd behavior.
You have any example code?
 
Comment from there I needed to test for is what I quoted.
 
@theVBE-it'srightforme yes you can
@IvenBach Public Property Set Foo(ByVal value As Variant) works
a Variant property can have all 3 accessors
 
oh
well that makes it easy to fix what he wanted then
i was not aware that was legal VBA
 
2:52 AM
I did not know that a variant would allow all 3 #TIL.
 
@MathieuGuindon can you explain the comments about shared state in the unit tests? do i basically just need to pass a new List each call instead of modifying the static one?
@IvenBach <-
 
A unit test should be entirely self containing. Not reliant on anything else for the test to run.
 
@theVBE-it'srightforme imagine all the tests are running at the same time
(which could very well be the case)
static mutable state isn't going to be thread-safe
and even if the tests run sequentially
 
so they can all call the same routine to do their work but that routine needs to construct the emulated VBE parameters distinctly for them
instead of using a static shared variable for it
ok
 
the fact that a test mutates some shared state that another test is going to read later is just not right
 
2:57 AM
got it
viewing the tests as distinct is hard when they are all listed in the same class
i think
 
i can probably fix most of this pretty quickly
 
the comment about resource translations - is there a way to see where those are?
i know enough of a couple common localization languages to probably try
 
when you change the meaning of an existing resource string that's already translated in other languages, it's important to delete the key in the other resource files - that way come translation time, they'll pop up as "to-do"
or translate those you can :)
 
not deleting the key basically leaves the other language with the older meaning
 
and I find those resource files by typing in the same name as the english resource file without the .resx
iirc it was like InspectionNames.de.resx etc
 
hm? they're all in the same place
yes
.de, .cs, .fr, et.al.
 
@MathieuGuindon not when you are finding them by typing in InspectionNames.resx in the solution explorer search :3
ok
 
3:01 AM
the resource keys exist in each one of them
 
obviously I wouldn't try to translate the german ones
ok gonna finish dinner then get on this
 
that would actually be a sure-shot way to get a review comment with the correct translation ;-)
 
don't tempt me
haha
and I guess the same would go for french wouldnt it :)
 
and with GH PR reviews we can even literally suggest the fix and you can incorporate the suggestions in one commit
 
Update README.md

moved to a table further down a bit
 
 
5 hours later…
8:38 AM
I made an effort to translate all the resources for ImplementedInterfaceMemberInspection
I am not confident in anything but the Spanish one so I left the English version in the comment box to make fixing it easier
I did not bother with localizations for the added inspection yet - since you said those were tracked automatically, I figured it would be easy to remember and add later when I havent burned out my limited capacity to understand foreign language.
The only questions I have left are the two commented in the added inspection
For the first one, I don't know what is off about the condition since it passed the original units tests I set up that it should not have passed if it was evaluating correctly, so I can't change anything. If it passes the full set with changes I'm just going to leave it unless I have something specific to look at.
For the second one, I thought that switching to an implementation of the base with global state could wait?
Everything else should be good so I am going to test it now.
 
@theVBE-it'srightforme When working with resource strings, do yourself the favor to install the Resx Manager extension for VS.
It is free and males handling them way easier.
 
8:55 AM
@M.Doerner I think I installed it?
But probably was not using it.
@Duga I knew it was going to be that before I read this.
Because it failed the test.
In my defense I did not learn until today that it was actually legal to have a Set and Let on the same property in VBA.
Because it is taught so clearly that Set = object, Let = value type
I know a Variant can be considered both but I assumed it would just require you to choose.
Is there an actual use case where you would have both a Set and Let like that? I'm honestly curious.
Working on RD has had the beautiful side effect of making me realize I also don't get VBA as well as I thought I did.
Anyways let me fix the conditional.
 
The ResX Manager can be found in the Tools menu.
 
Note that the ADODB.Connection class has a Get, Let and Set for its ConnectionString property.
That was the first time I stubled over it.
BTW, that property's behaviour is really strange.
 
ADODB is something I dont understand at all I have to admit
it is?
 
When you assign the connection string property of another connection, it actually assigns a reference of the entire connection.
The usaual behaviour would be to only copy the string.
 
9:08 AM
oh wow
wait does it do that because you need to have unique connection strings?
 
I guess they though, why be consistent when the other thing could be so convenient.
Not that Set assigning would do the same.
 
so let assign vs set assign does different things?
 
BTW, VBA has some very strange corners.
If you Let assign an object or class variable, Let coercion will take place.
I.e. the VBE will look for a default member and assign that instead.
If the default member has an object or class type, the process will recurse.
That is what happens when you do myRange = otherRange.
It is basically the same as myRange.Value = otherRange.Value.
 
oh wow
that explains why people get confused by default properties so much
 
We have a few inspections for that default member stuff.
 
9:13 AM
yeah those are great inspections then lol
I remember doing that all the time when I was picking it up at first.
 
BTW, you can have that for procedures, too.
 
Because you can't even understand what is going on in enough detail so you need easy things like "A=B" for stuff you can see on the screen.
But then that causes problems down the road!
For procedures?
 
If you just write myVariable, it is a compile-time error, provided it is not a class variable with a parameter-less default member.
If it has one, that default member will be called.
I think that is a really stupid feature.
 
^
That is, I think, the conclusion of what I was trying to tell you.
 
Even more stupid are DefTypes.
 
9:17 AM
But there has to be a way to get rid of it while retaining the ease for the learner? I guess that is where the modern editor part of RD comes in.
 
With those you can specify character ranges such that every variable starting with a character in the range automatically gets the corresponding type.
 
@M.Doerner I can't even process this.
 
Basically, Hungarian notation on steroids.
 
Oh
Yeah I can process that.
That is hilarious?
In a really bad way.
Just based on, say, everything I've heard others say about certain forms of Hungarian notation. :=)
Anyways I have to ask a question - can you use lambda with Comparers?
 
If you put DefBool A-C on top of your module, all members starting with a,b or c will be boolean, unless typed specifically.
Yes
 
9:20 AM
I suppose I could see where that is helpful for you when writing it.
But for readability...lol
 
This feature is so obscure that I have not seen it so far in the wild.
I just know about it because we have to handle it in the parser and resolver.
And, obviously, we have an inspection for it.
 
That seems like a vestige from actual Basic or something lol.
Also how do you use lambda with comparer?
 
Can you point me at an example?
 
.Distinct(
i think you probably know what im trying to fix :)
if i have to account for all three the easiest way seemed to be using the LINQ method for unique values
 
9:37 AM
For inspiration, you might want to look at WriteOnlyPropertyInspection.
 
*:+10:
need a break brb
 
Now that I look at it, I get the feeling that this inspection is a bit off.
Let me check the unit tests.
Oh wow, the test for Let with Set is wrong.
OK, the GroupBy should have grouped based on declaration.QualifiedName.
 
fixed
i mean no point not to add it lol
Why is Comparer<T> harder to work with than Func<T>?
Okay the fixed logic works for the added inspection.
 
9:59 AM
[rubberduck-vba/Rubberduck] build for commit 7e6294f6 on unknown branch: 61.51% (target 0%)
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5445?src=pr&el=h1) Report
> Merging [#5445](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5445?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/e56bb88f4eab28c1fbeb5146403ba9da37a52d39?src=pr&el=desc) will **increase** coverage by `0.03%`.
> The diff coverage is `92.5%`.


```diff
@@ Coverage Diff @@
## next #5445 +/- ##
========================
[rubberduck-vba/Rubberduck] build for commit f9697008 on unknown branch: AppVeyor build failed
[rubberduck-vba/Rubberduck] build for commit 6f0a1d78 on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit 6f0a1d78 on unknown branch: 61.14% (target 0.00%)
 
11:07 AM
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5445?src=pr&el=h1) Report
> Merging [#5445](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5445?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/e56bb88f4eab28c1fbeb5146403ba9da37a52d39?src=pr&el=desc) will **increase** coverage by `0.03%`.
> The diff coverage is `92.5%`.


```diff
@@ Coverage Diff @@
## next #5445 +/- ##
========================
 
11:21 AM
[rubberduck-vba/Rubberduck] build for commit 6e4fe6a6 on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5445?src=pr&el=h1) Report
> Merging [#5445](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5445?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/e56bb88f4eab28c1fbeb5146403ba9da37a52d39?src=pr&el=desc) will **increase** coverage by `0.01%`.
> The diff coverage is `91.18%`.


```diff
@@ Coverage Diff @@
## next #5445 +/- ##
=========================
[rubberduck-vba/Rubberduck] build for commit 6e4fe6a6 on unknown branch: 61.5% (target 0%)
[rubberduck-vba/Rubberduck] build for commit 6e4fe6a6 on unknown branch: 91.18% of diff hit (target 60%)
[rubberduck-vba/Rubberduck] build for commit 6e4fe6a6 on unknown branch: 61.50% (target 0.00%)
 
 
2 hours later…
1:42 PM
@theVBE-it'srightforme say you're making yourself a custom collection type, but you don't know how it's going to be used and you want to keep it generic enough to be able to handle both String and Object items - you'll need all 3 accessors on that property
To be clear, it is an edge case ;-)
 
 
1 hour later…
 
3 hours later…
5:53 PM
TFW you just start getting results from a new project, then realise the mountain still left to climb.
 
6:51 PM
> Thanks for asking! After adding the annotations in a module, make Rubberduck parse the changes, and run code inspections (by default they run automatically after parsing finishes).

In the Code Inspections toolwindow, search for "annotation" or "description" - it should filter down the inspection results to a series of "Rubberduck Opportunities" results mentioning a mismatch betwen the annotation and the corresponding attribute:

![filtered inspection results](https://user-images.githubuse
 
@Duga @MathieuGuindon I just type too slowly on mobile.
 
 
2 hours later…
8:40 PM
> Bonsoir à tous,
Thank you, that solved the problem, I would not have figured that out on my own. I recently started rubberducking. I did have seen the inspection-window, but there too many errors (I know, I can configure this).
Keep up the good work!
Georg
 

« first day (2123 days earlier)      last day (1057 days later) »