« first day (1722 days earlier)      last day (1458 days later) » 
00:00 - 15:0015:00 - 00:00

12:01 AM
RELOAD!
 
The Declaration equity check is failing in node synchronizer.
 
[rubberduck-vba/Rubberduck] 8 commits. 2 opened issues. 8 closed issues. 23 issue comments. 1439 additions. 87 deletions.
[skiwi2/MagicParser] 1 commit. 311 additions. 47 deletions.
[Zomis/Duga] 1 opened issue.
> I'm almost positive the failing line of code is this one: https://github.com/rubberduck-vba/Rubberduck/blob/next/Rubberduck.Core/Navigation/CodeExplorer/CodeExplorerItemViewModel.cs#L44

I suspect what is happening is that a `Declaration` is passing the equity test there that shouldn't be. That would prevent the node from being removed from the active tree, and since the context on the `Declaration` is the one that is being evaluated against the now current parse tree, the context search f
 
12:45 AM
[rubberduck-vba/Rubberduck] comintern pushed commit abbf1531 to next: Ensure created config file has root node. Closes #4816
Merge pull request #4817 from comintern/next

Settings hot-fix.
 
@Comintern why was it non-AV compatible? I'm thinking of using %TEMP% and a dummy XML.
 
It was something to do with the Microsoft Fakes framework, but I don't remember what it was.
I was faking the file system.
 
oh good
I wonder if faked filesystem woudl even work w/ XDocument.Load
I'm thinking no.
 
Worked just fine locally.
 
also i think it was deprecated?
 
12:53 AM
No clue.
 
no, it doesn't look like.
I'm probably conflating with a different technology. MS churns them out like there's no tomorrow.
 
IIR I was shimming things to allow reads and writes to a memory stream, but I forget the exact details.
 
This fills me with warm, fuzzy feelings.
#SoEasyAFifthGraderCanDoIt
 
Prig sounds like something a fifth grader would use as an insult.
 
I'm thinking I'll just cheat and :gasp: write to the filesystem.
 
1:02 AM
:gasp:
 
yeah, yeah, gonna be a scandal.
 
The problem with that is it doesn't keep the test in isolation though.
 
no, I agree. it stinks
 
I.e., you can "fail" a test if you don't have %temp% access.
 
but I can at least minimize by writing a dummy xml to the %TEMP% and hope for the best.
 
1:03 AM
There's also no way to ensure that the test is running in a "clean" environment.
 
I'm 99% sure that Windows would malfunction if you didn't have access to the %TEMP%
It's the XDocument.Load
 
I'm 99% sure that the test would fail if you read a stale version from %temp%.
 
If we weren't using that, I would probably use System.IO.Abstractions
 
(ok 25% sure)
 
1:04 AM
which is much less hassle than what I'm see with Prig or Fakes or whatever
 
[rubberduck-vba/Rubberduck] build for commit f504ae29 on next: AppVeyor build succeeded
 
hmm. mabye I should first see if I can load XDocument without the Load
hmm there is a Parse method
 
Yeah, that part is a bit unclear from the landing page.
 
I could switch out the Load and have it return a string.
let someone else do the actual read/write to the filesystem, which I can then wrap in System.IO.Abstraction.... right?
oh, good grief
the docs doesn't show all overloads
Load does have overloads for the textreader and stream. Even better.
 
> Pretty self explanatory. We have the UI cultures hard coded in a lookup without a check, so if the xml file uses a culture that isn't available in RD, the binder fails and the settings form doesn't load.

Can be reproduced with a settings file containing something like `<Language Code="fu-br" />`
 
1:11 AM
^ not sure that answers Alexis' problem. He should already have added spanish to the code?
(but I do agree and the hard-coding is a bigger problem)
 
It's apparently missing somewhere? I'm not sure what the effect was.
 
no, i mean to his local fork
 
Right - that would be the issue if the resource wasn't defined everywhere it needed to be in code.
TBH, all of the settings objects could stand a data validation audit.
 
^
i think we have an issue for that
 
I wouldn't be surprised.
It will deserialize anything with the correct data type, so that's the tricky part.
 
1:18 AM
DeserializeWithoutGarbagePlease
 
lol
 
hmm the settings stuff is looking bigger.
 
Bigger?
 
in the scope
data validation, more unit tests, etc.
 
Oh sure, that goes way back.
 
1:19 AM
there's alos the unfinished change about using System.IO.Abstractions and to consolidate all file writes into one place
(though the last one can be its own PR, I think)
There's also the EM stuff I need to get back. I need to stop finding myself new shiny things.
 
Agreed. That's largely tangential.
I need to stop finding myself old tarnished things.
 
is there a difference between old tarnished things and new shiny things?
I'm kind of torn - I know EM has waited so long but I'm also thinking the settings has to be working flawlessly.
 
1:47 AM
> @WaynePhillipsEA I thought I'd ping and see if you will be able to wrap this up? Would love to see this merged!
 
regarding this comment does anyone know the answer?
 
> Is this still relevant?
> This is partially addressed in the PR #4717 - pinging @retailcoder / @comintern to decide if this is good enough to close or to enhance further.
 
Deploying our UTC branch. We literally were fixing bugs until the last minute.
 
@Duga I mean, having our own message boxes would enable "don't show this again" boxes, among other nice-to-haves
 
@MathieuGuindon: I know I know, smoking's bad for me and all. But, my mama told me never to be a quitter.
We're sharing jokes while we wait for dev-ops to finish the deploy :)
 
@MathieuGuindon my uncertainty was because the comments made it sound like we were(?) popping a messagebox on an inspection result, which we don't.
 
2:33 AM
@Hosch250 lol
@this yeah.. still, a dynamic WPF msgbox could be slick
=)
 
> Should have thought of it sooner - in SSMS, I quite like how they have those extra buttons:
![image](https://user-images.githubusercontent.com/2367644/53215818-e2e02980-3617-11e9-9a3c-cefecdc4cd2b.png)

Though Windows messagebox are already copy-able, it makes for better discoverability and provide a way for linking documentation.
 
@MathieuGuindon no worries. It's now more relevant. :D
 
@Duga lol it's the 2008 R2 that should be blurred haha
 
meh i grabbed the first image off the google (didn't have SSMS handy)
focus on the functionality, not gray, man!
 
3:15 AM
Testing is starting.
It's bedtime for me :(
It'll be 10PM before I can go to bed, at least.
 
4:11 AM
Am I the only one keeping vigil?
 
yup
 
Hi, @bruglesco.
 
Hey @Hosch250
 
I was just about to say I don't know whether to be glad or sad.
 
How long til the tests finish?
 
4:11 AM
Glad that you aren't kept up late by bugs. Sad that nobody was around.
I have no bloody idea.
In the final stages of testing for one bug.
 
:{
 
We (as in, my team, not me personally) were literally fixing things until the last minute.
We did a stage push for testing at the time we intended to go to prod.
We started going to prod about 45 min later.
 
Are you at home or on-site?
 
At home.
I thought about going on-site, but decided not to since it's so late. I WFH Thursdays.
Wednesday was a WFH snow day.
Depending how late it gets, I might WFH tomorrow too.
Or go in late.
Been working on anything interesting lately?
 
Not really
 
4:16 AM
That's too bad.
I've been working on something interesting.
A PoC of our systems in .NET Core and using microservices.
 
Nice what is it?
 
A literally from-the-ground-up rewrite.
 
I haven't done anything in like 2 weeks. I need to get back on the horse
Wow that sounds massive
 
I've made some really good progress, added two new features already, redone much of our UI to make it newer and nicer.
It is, but it's insanely fun.
I get to rubberduck and argue with the few coworkers in on my work.
 
haha nice
 
4:18 AM
My boss wants me to demo it in May for hackday.
OK, I'm going off the radar for a sec--creating a PR.
 
I may be inheriting a website.
 
Nice? Or good luck?
 
both
Its written in php which I have zero knowledge of.
 
Oh crap.
Run!
 
hahahaha
 
4:20 AM
Only half-kidding there, if that.
 
Well Im not sure I could maintain it even if I wanted to
 
I'd share some GIF's of my prototype if I could, but I can't contractually.
I'd love to run ideas past you guys in details.
One of my moral supporters couldn't take it any longer and quit.
The other left the company, and is back now--working two full time positions, and not in IT anymore (DA now).
They want to get back into IT so they don't have to work two jobs--IT pays better here. And they can't keep any DAs they get.
Surprise surprise...
 
Data Analyst?
 
Yes.
So, they don't have any time to critique my code.
The other person in the in is the UI lady.
She's given me a lot of good feedback.
 
yes two full-time jobs will do that
 
4:25 AM
Everyone who goes up against the system here dies on it.
I'm a bit excited to try. I'm a Hosch.
 
hahaha
 
I mean, that means nothing to you guys, but we Hosch's are weird. We fight, and win.
 
The family name has no meaning to me, but the fighting spirit does.
 
It was actually in my grandma's obituary. Something to the effect of "we fight within ourselves a lot, and we have our problems, but if you are in a fight, you want the Hosch's on your side."
My mom hates it, and my dad thinks it is weird.
But all my brothers laughed, and are proud to carry the spirit.
 
I'm a red-haired leprechaun.
 
4:27 AM
Irish!
I've just been listening to a bunch of Irish rebel songs.
 
haha nice. I'm a lot of things. Which makes me pretty American
I look Irish af tho
 
I mostly come from the Luxembourg area, with some French and some German.
 
We have German and Polish as well
 
Nice.
Holy cow, our prod site.
I just sent a recognition to a few groups, and there's at least a half-dozen long-gone users in there.
 
with access to production?
 
4:42 AM
I don't know.
I just counted. 22 of them.
 
5:00 AM
Hello, @MarkBalhoff.
C# and VBA? Just what we need! Welcome to the pond!
This is where the Rubberduck VBA addin is designed, implemented, and discussed, along with various other coding elements, best practices, and random discussions.
 
5:27 AM
@Hosch250 have a good night. I hope the tests finish soon.
 
Night!
 
5:42 AM
Night, guys. Testing is still in full-swing, but it seems quiet except for the custom reports that the DAs write.
I'm taking off so I can wake up tomorrow.
AHHHHH! QA nabbed me.
 
 
1 hour later…
6:48 AM
> @bclothier Apologies, not had any time recently. Hopefully in the next few weeks.
 
 
1 hour later…
7:57 AM
Hey Hosch! I left the chat tab open and just got back on computer for a few minutes here right before bed.
Great to be here! Yes that's my core experience. A lot of data management and custom utility and reporting software. I have heard about this project many times over the years and just never got around to plugging in. I'd love to get familiar with the project and see what I can contribute when I have time.
 
8:43 AM
> This might already be known but I could not find how to search known bugs:

When I try to rename standard module "Z-ObjectFactory" to "Z-Object-Factory" (or the other way around) the ok button in the rename-dialog is not shown.

Its seems like rubberduck dont want me to use "-" in any module name while ms-access has no problem with this.
 
@MarkBalhoff Welcome to the pond!
We always appreciate new contributers.
A good starting point might be the issue list on the github repo.
We try to categorize the issues based on how much knowledge about Rubberduck`s internals are required. However, that is a rough guess from people working on the project for some time. Do, take it with a grain of salt.
We also have some references in ge wiki on the repo regarding some parts of how RD works, but I doubt that everything is up to date.
Oh, and if you have any questions, you are always welcome to ask here in chat.
Hope to see you around in this chat in the future.
 
 
2 hours later…
10:36 AM
@MarkBalhoff welcome aboard from me
 
11:17 AM
0
Q: Continue scrape page 1 to 25

Naresh Gi want to scrape pages from 1 to 25 pages: Pls find my code below it show error subscription out of range. pls help me. Sub freshersworld() Dim r As Long Dim ie As InternetExplorer Dim doc As HTMLDocument Dim output As Variant Set ie = New InternetExplorer ...

 
11:30 AM
> While dashes are legal, they would require the name to be bracketed:

```
Module-1.x() 'Syntax error
[Module-1].x() 'OK
Module_1.x() 'Doesn't need bracketing
Module1.x() 'Neither this
```

Wouldn't you rather have names that doesn't require bracketing?
 
11:41 AM
> This is a standard module which I usually dont want to use the module name anyway.

And this is often not a matter of choice. If there are tons of legacy code which work with exactly this naming convention then Its not as easy to change.

Anyway: Rubberduck should not try to force me to do things just because it thinks its better for me.
> This is a standard module so I usually dont want to use the module name anyway.

And this is often not a matter of choice. If there are tons of legacy code which work with exactly this naming convention then Its not as easy to change.

Anyway: Rubberduck should not try to force me to do things just because it thinks its better for me.
> This is a standard module so I usually dont want to use the module name anyway.

And this is often not a matter of choice. If there are tons of legacy code which work with exactly this naming convention then its not as easy to change.

Anyway: Rubberduck should not try to force me to do things just because it thinks its better for me.
> This is a standard module so I usually dont want to use the module name anyway. I use "x()"...

And this is often not a matter of choice. If there are tons of legacy code which work with exactly this naming convention then its not as easy to change.

Anyway: Rubberduck should not try to force me to do things just because it thinks its better for me.
> This is a standard module so I usually dont want to use the module name anyway. I use "x()"...

And this is not a matter of choice. If there are tons of legacy code which work with exactly this naming convention then its not as easy to change.

Anyway: Rubberduck should not try to force me to do things just because it thinks its better for me.
 
11:56 AM
> I agree that we should allow all legal names that do not cause a conflict sith an existing name.

Still, I would suggest to ask the user for confirmation for choices that require brackets in code.
> I agree that we should allow all legal names that do not cause a conflict with an existing name.

Still, I would suggest to ask the user for confirmation for choices that require brackets in code.
> Currently the code for validating the name looks like this:

https://github.com/rubberduck-vba/Rubberduck/blob/e5baebd879f0846e42b0aa76fa6bb299bffc8efb/Rubberduck.Core/UI/Refactorings/Rename/RenameViewModel.cs#L66-L70

The line `!NewName.Any(c => !char.IsLetterOrDigit(c) && c != '_')` is a bit too restrictive.

We most likely need a separate property `IsRestrictedName` which will then present the user with a yellow exclamation icon instead of red cross icon and thus bring the attention
 
@skiwi Yet another reason not to buy Nike. The #1 reason is that they simply don't fit my feet.
 
12:56 PM
@MarkBalhoff hi! welcome to our little corner of the Internet! There are countless ways you can contribute to the project! Step 1 would be to fork the project on GitHub (and "star" us too, if you haven't already!) Are you familiar with git & GitHub, OOP and DI/IoC? If not don't worry, this chat is the perfect place to ask anything about it! There are a number of inspections that are fun and fairly easy to implement, like #4522.
 
1:08 PM
> I think what we actually need is a different validation for modules and maybe projects. For declarations defined in the code, the restriction is completely valid.
 
> Rubberduck should not try to force me to do things just because it thinks its better for me.
Nice, we're getting R#-like feedback!
The funny part is that it's just an accidental oversight. it is better for you though
I wonder what they'll think of While blocks expanding into Do While...Loop with block-AC...
 
1:24 PM
@MathieuGuindon MY PRECIOUS!!!
 
lol
that is totally deliberate "we know better" territory though
 
Agreed. I have yet to hear of a single pro for the While...Wend
I also find it somewhat ironic that VB* has End <whatever> constructs but with While, it bucks its own convention and uses Wend instead of End While.
I'm sure that it was just legacy carryover from the hairy, old, bad days of BASIC but still.
 
Just be glad we didn't end up with Do...Dend or Do...Doop.
 
I would have liked Do...Dead
 
Do...Da
Hmmm... we might want to inspect for the more, ahem, permissive identifiers requested in #4819.
This doesn't trigger an inspection result: Dim O_O As Long
 
1:39 PM
Should the use of underscore be inspected?
 
Everything about that should.
 
I personally don't like them but they are AFAIK, legal and aren't restricted
If we're talking about dashes that would require bracketing, I would agree w/ inspecting for that.
 
They should be inspected in procedure names if they aren't an interface implementation.
 
ooooh
you're right
i forgot about VBA's funny treatment of _
 
For other identifiers, I'd treat the _ as a delimiter and apply the normal naming inspections to the part left of the first underscore.
OK, so what am I missing here?
 
1:45 PM
That's a module?
Oh, FFS. it's host dependent
 
Yeah, standard module in Excel.
 
just proved it - Excel nixes it. Access okays it.
 
> Implementations MUST support <Latin-identifier>. Implementations MAY support one or more of
the other identifier forms and if so MAY restrict the combined use of such identifier forms.
That wants a NonPortableIdentifierInspection.
 
So, bool IHostApplication.IsValidModuleName(string name)?
@Comintern IKR?
 
TBF, I'm tempted to say "stop using those silly characters"
 
1:52 PM
^
 
I had a quick test - Word and PowerPoint disallows the dashes. Access seems to be the lone wolf here.
But who knows what other VBA hosts out there are doing
and for all I know, there might be other characters that the hosts won't agree on.
 
TBH I held back from replying "if only there was a refactoring tool to rename all the weirdly named legacy modules"
 
^
I think that's the correct approach
 
> This is host specific. From **3.3.5 Identifier Tokens**:

> Implementations MUST support <Latin-identifier>. Implementations MAY support one or more of
> the other identifier forms and if so MAY restrict the combined use of such identifier forms.

In Excel, identifiers containing `-` are restricted, so implementing this would require name validation for each VBA host. If this _is_ implemented, I'd propose adding a `NonPortableIdentifierInspection` that would flag uses of identifiers tha
 
It's the intended one anyway
 
1:55 PM
@Comintern De Do...Do...Do...Da...Da...Da Is all I want to say to you
 
@Duga GH broke the formatting.
 
@this you know all those nifty CTEs you helped me with a couple days ago? Yeah. Somehow I closed SSMS and failed to save my examples. Sigh...
Guess I'll learn it better by recreating from scratch.
 
Also I wouldn't say that Excel treats - as a restricted identifier - it's just plain illegal.
 
Sub CampTownRaceTrack()
    Do Until fiveMilesLong
        miles = miles + 1
    Da
End Sub
 
lol
 
1:56 PM
(mentally, I think restricted = bracketed)
 
@this Good call. Editing.
 
> This is host specific. From **3.3.5 Identifier Tokens**:

> Implementations MUST support <Latin-identifier>. Implementations MAY support one or more of
> the other identifier forms and if so MAY restrict the combined use of such identifier forms.

In Excel, identifiers containing `-` are illegal, so implementing this would require name validation for each VBA host. If this _is_ implemented, I'd propose adding a `NonPortableIdentifierInspection` that would flag uses of identifiers that f
 
@Duga what's the rule for VB6?
 
@Comintern reminds me of that old joke -- 3 men broke out of the prison on an island in the dark of night. First swam 2 miles but drowned because the water was too cold. Second went out 4 miles and drowned. The third swam 8 miles, said to himself, it's too cold, and swims back. The island was 10 miles from the mainland.
 
> "that would flag uses of identifiers that fall into the "MAY" category of the specification."

I think it would also make sense to warn against using them because of reasons (as specified in chat).
 
1:59 PM
^
 
@Duga the formatting is still broken.
 
@this but it looks funny!
oh...
 
Gonna lurve them HTML aggressively parsing anything inside <>s.
 
@MathieuGuindon That's a good question. They're illegal there too.
 
does VB6 has its own specifications?
 
2:02 PM
> This is host specific. From **3.3.5 Identifier Tokens**:

> Implementations MUST support &lt;Latin-identifier>. Implementations MAY support one or more of
> the other identifier forms and if so MAY restrict the combined use of such identifier forms.

In Excel, identifiers containing `-` are illegal, so implementing this would require name validation for each VBA host. If this _is_ implemented, I'd propose adding a `NonPortableIdentifierInspection` that would flag uses of identifiers tha
 
@this Fixed.
 
:+1: now it parses.
 
@this I don't think so - it looks like it's simply the pedantic version of the spec.
 
Too bad. There's also other forms that don't exist in VBA
We had to update the grammar slightly to handle those extra surprises VB6 packages into their files.
 
2:14 PM
> Because it's host specific, and I really don't want to have to enumerate each host's specific extensions, I'm inclined to stick to a modified version of the original proposal - provide a yellow exclamation icon for any identifiers that bucks the absolute minimum as specified in 3.3.5 (which is any latin characters), along with a try/catch in applying the change with notifications to the user if the change is rejected by the host.
 
2:28 PM
@Duga I'd bet you a dollar it's only Access.
 
@Duga This really requires knowledge of how exactly a lot of things work in RD.
Basically all places handling classes ask for the exact declaration type.
It is a known quirk of the type setup that everything classifying as a class has the declaration type ClassModule.
 
@M.Doerner given that it's flags, that should be no problem. We can set both the class and documetn flag
it's just that we shouldn't have to look at the ComponentType if we already have DeclarationType
 
2:44 PM
> I reclassified this because, first, it really requires to know how to handle the change in a lot of places in RD and, second, because this is not a bug but a know and at one point probably intentional quirk of the setup of the type enums in RD. (It also applies to user forms.)

That no test broke is not surprising since we generally do not add tests regarding document modules to test fixtures not explicitly sealing with host specific features.
 
Things are not that easy. E.g. the setup of a few methods on the declaration finder assumes that a declaration type used as a flag never gets used as actual declaration type on a declaration.
 
Hmm. If the quirk is in fact intentional, then it shouldn't be a flag after all. It also raises the question why the DeclarationType almost duplicates the ComponentType
 
The enum is a mixture of flags and actual values.
 
@this Not all declarations are components.
 
sounds like a confusing enum to have.
 
2:50 PM
*most
 
@Comintern I know - that's why I said "almost" - I assumed originally that the point of DeclarationType was to tell me what type of declaration it is without having to dig up the underlying type via the ComponentType
 
I'd personally like to make Declaration abstract and derive types for each DeclarationType instead of using the enum.
:breaks 5000 tests:
 
And it was basically tied to the type of the declaration as well, as in .net type.
That would be cleaner.
 
^
also makes its construction a bit more saner.
 
It would also allow pattern matching.
 
2:52 PM
@this the original design had everything as a Declaration, without an inheritance hierarchy; curing the DeclarationType enum involves revisiting Declaration... which means surgery in the core of the backbone =)
 
However, I do not know how much the caching in the declaration finder will like that.
We ha e dictionaries based on the declaration type.
 
@MathieuGuindon yeah, that issue/discussion has come up more than a few times already. :)
 
@this it was mostly to tell e.g. a variable from a procedure
 
@M.Doerner Those could be changed to Type.
The harder part would be tracking down anything where the type "changes" in the resolver.
I'm not entirely sure that a Declaration maintains its DeclarationType throughout the process. I would hope so.
 
We would require a good type hierarchy of the declarations first.
 
2:55 PM
I would say that a mutable Declaration is a bigger design problem.
At least, I don't htink we want a moving target for our caches.
 
It has to be mutable.
 
which complicates the cache invalidation, no?
 
I mean, part of it.
Not the type, but stuff like AsTypeDeclaration.
We really cannot know that at the time of creation.
 
That's just a reference to another declaration though.
 
Gotcha. The more important thing is that the parts that are relevant for caching/finding/etc. should be immutable
or else we get a moving target and a hell on our hand.
(right?)
 
2:59 PM
That might be putting it mildly if anything.
 
I guess that we could make the Declaration base type immutable, and allow derived types to have mutable memers.
(not sure if that'll work)
 
00:00 - 15:0015:00 - 00:00

« first day (1722 days earlier)      last day (1458 days later) »