« first day (1603 days earlier)      last day (1577 days later) » 

12:00 AM
Or will I need to create a new interface to do what I need?
 
RELOAD!
[rubberduck-vba/Rubberduck] 6 commits. 2 opened issues. 6 closed issues. 16 issue comments. 251 additions. 256 deletions.
 
Oh it's home time.
 
[rubberduck-vba/RubberduckWeb] 2 commits. 73619 additions. 73619 deletions.
 
No you need to use it in your class. It may suffice for your needs
 
I'll need to use what in the class?
Public Class Foo(ITempSourceFileHandler tempFileHandler) as part of the costructor injection?
 
12:05 AM
@IvenBach public class Thing { private readonly ITempSourceFileHandler _handler; public Thing(ITempSourceFileHandler handler) { _handler = handler; } public OtherThing DoThing(string thing) { _handler.Something(thing); } }
public class Thing
{
    private readonly ITempSourceFileHandler _handler;
    public Thing(ITempSourceFileHandler handler)
    {
        _handler = handler;
    }

    public OtherThing DoThing(string thing)
    {
        _handler.Something(thing);
    }
}
@Hosch250 ^
 
[rubberduck-vba/Rubberduck] retailcoder pushed commit 79aada47 to next: fixed typo / resource key
[rubberduck-vba/Rubberduck] retailcoder pushed commit eb52bbd8 to next: added one more test (ref. #4136)
Merge pull request #4459 from retailcoder/next

Fix broken .resx reference in Settings dialog / AC settings
[rubberduck-vba/RubberduckWeb] retailcoder pushed commit 8d203d4a to master: updated banner/logo
Merge pull request #59 from retailcoder/master

updated banner/logo
 
12:24 AM
launches remote desktop
~realizes he forgot to boot the server, that's why the VM is down~
bbl
 
@Duga somebody likes our website!! woohoo!!
 
1:17 AM
Oh snap. Octobers almost over. Need to get PR in to pick up another shirt.
 
yup :)
 
@Hosch250 .NET framework is on a slower pace. visualstudiomagazine.com/articles/2018/10/24/net-updates.aspx
 
2:21 AM
oh nice
Message:   Expected: <
ExecuteStoredProcedure ("AddAppointmentCountForAClinic", False,dbconfig.SQLConString, _
                | thisClinic.ClinicID ,>
  But was:  <
ExecuteStoredProcedure ("AddAppointmentCountForAClinic", False,dbconfig.SQLConString, _
                 thisClinic.ClinicID ,|>
gotcha
 
 
1 hour later…
4:16 AM
> Can't replicate this. Assuming it's been fixed in the intervening time and closing.
 
with this, we are now balanced:
 
nice!
I'm still playing whack-a-mole with SCP
the prettifier condition for setting the selection at the current indent level is wrong
oooh I got it
 
4:31 AM
> SCP was missing a case where caret was located before the first non-whitespace character of a code line.

```vb
| foo
```

Given input `"`, the above now produces the expected result:

```vb
"|" foo
```
> Tested with the latest build and cannot replicate this. Seems to have been fixed by #3389.
[rubberduck-vba/Rubberduck] bclothier project card. Enough said.
> Closing this as cannot reproduce and may be host-specific. If this is a issue that needs fixing in the Rockwell host, any PR would be welcome.
[rubberduck-vba/Rubberduck] bclothier is playing around with a project card
[rubberduck-vba/Rubberduck] bclothier is checking what fun stuff @Duga can say about project cards
[rubberduck-vba/Rubberduck] bclothier is bored so why not move a project card
[rubberduck-vba/Rubberduck] build for commit 9d51719a on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] retailcoder pushed commit 5e42b681 to next: added SCP service test, ref. #4460 (passes)
[rubberduck-vba/Rubberduck] retailcoder pushed commit 85e435fd to next: added failing test for #4460
[rubberduck-vba/Rubberduck] retailcoder pushed commit 77574e4c to next: fixes #4460
[rubberduck-vba/Rubberduck] retailcoder pushed commit 9d51719a to next: fixes #4460
Merge pull request #4462 from retailcoder/scp

SCP hotfix
 
5:00 AM
[rubberduck-vba/Rubberduck] build for commit f5da764c on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
> As noted in #3651 we now have several errors arising from WPF binding.

Due to the nature of WPF compilation, those are not normally caught during build and may not be realized until runtime. Which kinds of suck.

Here is a [SO answer](https://stackoverflow.com/a/25549827/643342) that provides several options on how to help catch them as part of the build process.

Solution 3 and 9 may be of interest.
 
just putting together a rough overview of these 1.5K commits :)
</mug>
 
[rubberduck-vba/Rubberduck] build for commit ff426173 on next: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] retailcoder did something with some project card
[rubberduck-vba/Rubberduck] retailcoder is checking what fun stuff @Duga can say about project cards
[rubberduck-vba/Rubberduck] bclothier pushed commit eb9353a1 to next: Closes #3861 -- introduces new setting that isn't UI-visible but allow us to ship Rubberduck with Trace as the default logging level. If the user do not edit it, at the shutdown
Merge pull request #4447 from bclothier/TraceAtInstall

Trace logging by default; change to None after successful run
[rubberduck-vba/Rubberduck] comintern pushed commit ebdd5c5f to next: Add launch settings to .gitignore
[rubberduck-vba/Rubberduck] comintern pushed commit a5b1b889 to next: Maintain selection after indenting. Closes #4452
Merge pull request #4455 from comintern/fixes

Maintain selection after indenting.
 
5:25 AM
Ah crap, @this FYI these merges introduced a conflict in the COM leak PR
 
@IvenBach The tests failing for you test that using the import command from the CE imports exactly what you specified. They assume that you will call Import on the components collection for the for the files specified, which is wrong now.
Since the previous load was directly via the components collection, which is mocked, there was no need for the files to exist.
Once you have abstracted away the file system, you will have to think of how to express and test in the tests that the specified files were imported into the VBE.
Moreover, you will need some additional tests for the addition of the folder annotation.
 
6:18 AM
Maybe, you should abstract that into a folder annotation adder, which takes a string and returns a string, you can simply inject into the command.
@IvenBach @this The ITempSourceFileHandler is the wrong thing here for multiple reasons. First, it only deals with existing components. (Read takes an IVbComponent.) Second, in VB6 it is entirely faking most operations.
There will have to be a new IFileHandler interface together with an implementation, as I suggested in my PR comment. Alternatively, we could opt to go for the NuGet package.
 
 
4 hours later…
10:26 AM
@M.Doerner Today's lesson for @IvenBach: Don't blindly take others' word for it. When suggesting which class/interface to use, it pays to read the source code to assess whether it fits need. Evidently I didn't yesterday.
 
10:46 AM
[rubberduck-vba/Rubberduck] build for commit 575dd99b on unknown branch: AppVeyor build succeeded
 
11:42 AM
> ~Reminder to myself to see if #4273 is in-scope for the PR as it likely needs the document state.~

The issue was already resolved by a prior fix, so all good there.
> Sadly, build .4058 doesn't seem to have fixed this, or at least I can't tell because Excel crashes. Every. Single. Time.

Starting with this code (a continuation of the originally reported code):

```vba
returnCode = ExecuteStoredProcedure("AddAppointmentCountForAClinic", False, dbConfig.SQLConString, _
"@clinicID", surveyListRS.Fields("ClinicID").value, adInteger, _|
"@startDate", reportDate, adDate)
```

With t
> @daFreeMan thanks. Likely I missed an off-by-one and the service is throwing an IndexOutOfRangeException. A quick patch that should probably be in place anyway, would be to have a try/catch+logging in the AC service, which could then just resume without handling the keypress.
Note that this is an entirely different problem than originally presented though: handling " and handling ENTER are two distinct code paths - the originally reported issue is indeed fixed, as far as I can tell. Does ENTE
> After thinking about it a bit - I decided I'd rather consistently wrap all COM objects in SCWs. Otherwise the debugging efforts will be exceedingly hard should the scope grow.

We can leverage the fact that a `dynamic` object in .NET can be used exactly like a `IDispatch` and thus be able to late-bind to a COM object. That allows us to define SCWs without having to create a full blown SCW re-implementing the underlying COM interface. Since the work with the document interfaces are meant to
 
12:14 PM
[rubberduck-vba/Rubberduck] build for commit f0a2101c on unknown branch: AppVeyor build succeeded
 
12:25 PM
> Now no repo on the crash, however, hitting enter after line 2 does leave the cursor at the left margin, so auto-indent has been borked.

Interestingly, when I went back into the settings for AC to test your request, `Enable AC` was selected, but none of the sub-options were selected. I tested with AC disabled, then, 1-by-1 enabled each additional option and repeated the <kbd>Enter</kbd> and had no crash.

Guess we'll leave this one closed.
 
12:37 PM
@MathieuGuindon Looks good, although I wouldn't include that text in the image.
It will make it resize really weird on mobile.
 
Aw dam
 
Don't worry, I can take care of that.
 
12:56 PM
I was going to create an issue to ask for several of the Code Pane's context menu RD options to be added to the Code Explorer's context menu, but after some digging, I discovered that they're there.
Maybe we just need to improve discoverability...
Find symbol... and Find all references... are in the CP's menu on the main level. In the CE, they're buried under the Find... menu.
That makes sense to an extent. But Find implies, to me, a search dialogue, not so much the RD implementations. I think this may well have been the first time I ever clicked the Find menu item there.
Thoughts?
It does seem that the various Indent options should be available from the CE's context menu.
 
1:10 PM
> I analyzed this a bit using the branch for the PR #4456 I can observe that:

1) the numbers of `Add` entries and `Removed` entries from the final trace of COM Safe do not always balance. At minimum, 3 will not have their `Removed` entries; the `IVBE`, the `IAddIn`, and the `IHostApplication`.
2) We will get `RaceOnRCWCleanup` warnings in process of disposing the COM safe.
3) Even if we exempt those objects from disposal, we still get the warning on say, a `ICodePane`. It doesn't even have
 
now this is a good question:
34
Q: How can I avoid always feeling like if I completely rebuilt my program from scratch I'd do it much better?

AshishI have learned a significant amount of coding however, it's always been in a scientific environment (not computer science), completely self-taught without anyone to guide me in the right direction. Thus, my coding journey has been.. messy... I've noticed now that whenever I build some type of pro...

 
@FreeMan By about the 5th or 6th refactoring, you probably have...
 
@FreeMan Agreed. I've had to fight that temptation one too many times. I keep remind myself of the article that Joel wrote about rewriting being A Bad Ideaâ„¢.
 
@this You may want to provide a link to that as an answer. (Or at least provide it here...)
 
1:24 PM
> In light of what has happened since the issue opened, I think we are in a position to close the issue after the PR #4458 which addresses the remaining issue that prevents a clean shutdown for all hosts.
 
@FreeMan actually someone already did link to it in the comments. ;-)
 
oh... I hadn't read all of them. hence "answer" vs "comment" ;)
 
To be fair, you had to click the link to see what it was
 
Except that isn't true if the Dictionary isn't a class member. This works just fine: Dim x As New Scripting.Dictionary: x("A") = 1 - In fact, the weird indexing behavior of Dictionary will "helpfully" add item "A" because it doesn't exist. — Comintern 7 secs ago
Interesting question. Not the answer though.
 
@MathieuGuindon / @FreeMan There are number of issues for the AC bugs/work-items that are still open. That would be good to get them cleaned up -- I'm thinking that some of them may have been fixed already in Mat's last PRs? I know some are for blocks, though.
 
1:35 PM
@this they're all for block completion, unless I missed them
 
Ok. Some didn't have the work-item and the title sounded like they were for SCP, too.
 
I wonder if objects in public fields like that behave differently in regard to default member resolution...
 
Oh,..might have missed them then
 
@Duga To avoid races on RCW release, we will have to add some kind of kill switch to the EvaluateCanExecute method of several commands.
 
in case you haven't noticed, I'm trying to cull the # of open issues. Bugs in particular. :D
 
1:37 PM
Quite a few query the IVBE.
 
@M.Doerner that switch already exists. VBEvents.TerminateEvents
It is not used yet, though.
 
Does that really stop the commands in the view models from directly querying the VBE?
 
I overstate the case bit - it's just an event that is fired.
The point being, that can be used in the command base class to set the kill switch
 
Ah, that macet more sense now.
 
It would also need to be used in any other classes where it has similar queries that may run in different threads as well.
Just to confirm - all subscribers are guaranteed to have had processed the event after we return from the event's broadcasting, right?
Answer is that the synchrony (or lack thereof) depends on the subscribers' implementations. By default events are synchronous unless the subscriber spins a new task then all bets are off.
 
1:47 PM
ah crap, just hit another SCP bug
(|) -> {(} -> (((|))
it's the prettifier, SCP handler has a passing test for that
 
@MathieuGuindon running a "Buy one, get one free" deal?
 
10 hours ago, by Mathieu Guindon
I'm still playing whack-a-mole with SCP
 
don't you mean prettifier?
 
replicating the VBE's is obviously tricky
 
1:50 PM
thing is, it's mockable, but not exactly reliably testable
 
Yeah, but I think that is much much better than a untestable implementation
since you can just fix up the mocks. It's a matter of exactly replicating all the quirks.
 
just repro'd the crash
 
Grrr... I need to get VS set up for RD at work. VBA does something really odd with public fields in class modules.
 
i think someone said that the public fields are basically a hidden property let/get
 
Except VBA is either not treating them that way or it breaks the default member resolution.
Example:
 
1:59 PM
that's what happens when you Implements Class1 with Class1 having public fields
 
Sub Test()
    Dim foo As New Bar
    Bar.DictionaryMember("A") = 1
End Sub
If DictionaryMember is declared as public DictionaryMember As Dictionary, that code throws.
 
If it's declared as a Get, it doesn't:
Public Property Get DictionaryMember() As Dictionary
    Set MyData = New Dictionary
End Property
 
would you get the same symptom if the explicit Get returned a Variant?
I think by definition, all public fields must be implicitly Variant to be Automation-compatible?
 
2:02 PM
No, that gives "Object required".
When I check the TypeName of the return value, it's Dictionary for both of them.
 
@Comintern the thing about TypeName is that it's working with a Variant. Does it matter if it's an Object instead of Variant?
 
@this It shouldn't, in theory it would bind both of the calls. Isn't all default resolution run-time binding?
 
Should be yeah.
That's why I was thinking that public field had some implicit voodoo casting going on which then prevents you from using the member the same way with an explicit Get property
Maybe your solution is to not use fields and write a RD inspection StopUsingFieldItCausesCancerInspection
 
2:12 PM
> The AC behavior I'm thinking of for this will be the same as for block completion: the handler will select the entire "trigger word", and capture the next keypress - if it's {TAB} or {ENTER} (as per preferences/settings), autocorrect takes over; if it's any other key, selection is repositioned immediately after the "trigger word", and the keypress goes through.
[rubberduck-vba/Rubberduck] bclothier is checking what fun stuff @Duga can say about project cards
> The rewritten block completion will work off actual parse trees, which should automatically dismiss this issue.
 
@this I think that's all of them
 
:+1: that helps clarify the scopes.
 
Ugh. Demonstratively wrong answer upvoted again?
 
@Duga I've been triggered!!!! sobs
 
@Comintern I am a bit confused by your example code. Wouldn't that always throw as long as Bar does not have a predeclared ID?
 
2:17 PM
@M.Doerner Yes. Copy paste errors in the example code. Should be:
Sub Test()
    Dim foo As Bar
    Set foo = New Bar
    foo.DictionaryMember("A") = 1
End Sub
 
That makes a lot more sense.
 
:blushes:
 
@M.Doerner I’m not sure what the components collections is. Once at work I’ll go over your PR comment and strive to understand your comments.
 
that's project.Components
 
The components collection is the member of the IVBProject holding all IVBComponent objects belonging to the project.
 
2:22 PM
To start from top level - VBE -> VBProjects -> VBProject -> VBComponents -> VBComponent
Note that a VBComponent represents a module, a userform, or a document (e.g. for Excel, that's WorkSheet or WorkBook, for Access, that's Form or Report, and so on).
 
Worksheet, Workbook
;-)
 
DamnYouPascal! WhatHaveYouDone!
2
 
    public static User GetUserById(int id)
    {
        var users = GetUsers().AsEnumerable().Where(row => row.Field<int>("Id") == id);

        var userInfo = users.Select(s => new User{
            Id = s.Field<int>("Id"),
            Username = s.Field<string>("Username"),
            Name = s.Field<string>("Name"),
            Email = s.Field<string>("Email"),
            CreatedDate = s.Field<DateTime>("CreatedDate"),
            Phone = s.Field<string>("Phone"),
            City = s.Field<string>("City"),
Holy cow.
 
DamnYouPascal!WhatHaveYouDone -> DamnYouPascal.Item("WhatHaveYouDone").Value
 
lol
 
2:31 PM
@Hosch250 so... Id better be a unique clustered index, because that code is scary
 
Ha! Hahahahaha...
 
@this To an Excel dude, WorkBook is like saying AccEss.
 
@Comintern I know. I should have known better.
 
public static User GetUserById(int id, string key)
{
    var user = GetUsers().AsEnumerable().FirstOrDefault(row => row.Field<int>(key) == id);

    var userInfo = new User{
        Id = user.Field<int>("Id"),
        Username = user.Field<string>("Username"),
        Name = user.Field<string>("Name"),
        Email = user.Field<string>("Email"),
        CreatedDate = user.Field<DateTime>("CreatedDate"),
        Phone = user.Field<string>("Phone"),
        City = user.Field<string>("City"),
        State = user.Field<string>("State"),
Much cleaner as far as the code goes.
 
@Hosch250 .SingleOrDefault, and let it throw if there's two or more
 
2:33 PM
Makes sense.
 
.FirstOrDefault in GetUserByUsername makes me wonder where & how it's used
 
Does it have to have AsEnumerable?
 
In the CE or the code itself, is there any indication that a module is a .cls vs a .bas module other than the little icon in CE? (Assuming that the class just contains some "methods" and isn't really a "class")
 
The fact it's there makes me wonder.
 
@this IIUC that makes the rest of the query run against LINQ-to-Objects, which means the SQL trace would show all users being returned
 
2:35 PM
Not really. Icons and compile errors when you misuse module as a class (or vice versa) is pretty much it.
 
not ideal, I'd think
 
^
Makes me wonder if they bothered to set a unique constraint on the Id field...
 
@MathieuGuindon that's what I was afraid it'd do.
 
@Comintern IKR?!
 
I'd be looking for the hacks elsewhere that deal with it in software (if any).
 
2:37 PM
@this :/
 
makes me wonder if the php dev that made the MySQL db I'm putting up with, has found their next job at @Hosch250's place
 
and that's why I think EF does harm than good. It babies developers too much.
 
No, this was a CR question.
 
It's a good scapegoat though. "Oh yeah, I share my account with the other @comintern. He's an idiot."
 
phew
woah
crash on open
of course, no reliable repro
 
2:40 PM
You mean I have to look down to the bottom of my monitor?!? TOO MUCH WORK!
 
node could have a tooltip, I guess
 
@MathieuGuindon that could work... blush...
 
Nah, I think the icon is good nuff
I would save the tooltip for detailed information (e.g. predeclaredid)
 
it's WPF, the tooltip can span the whole screen with every bit of info we can put in it if we want ;-)
 
oh, in that case, stick in a LOLCAT GIF.
 
2:44 PM
@cybernetic.nomad Better would be to Dim someOtherName As String. Str is hiding a native VBA function... ;-) — Comintern 36 secs ago
 
> Class1 (class module)
@Description or VB_Description
120 lines of code
8 members
14 inspection results
plus a lolcat gif
 
is wpf tooltip smart about positioning?
 
I thought we had a member hiding inspection.
 
one annoyance with big tooltip is that sometime it can get in way of other information you may want to look at
 
If it's big enough, it can be hard to close it.
 
2:47 PM
Or was that just a feature request? (Or maybe I'm way overdue for an update at work)...
 
pretty sure Mat won't let it be that big.
 
@cybernetic.nomad or Rubberduck to tell you about the shadowed declaration ;-) — Mathieu Guindon 30 secs ago
 
Was going to wait to point that out until I figured out why it wasn't reporting it in 2.2.0.3624
 
Does it report for Dim Str in next?
 
2:48 PM
hold on
crash on open again
 
WTH?
 
last log entry:
2018-10-26 10:40:50.8008;INFO-2.2.0.4058;Rubberduck.Common.LogLevelHelper;Minimum log level changing from Trace to Off;
dammit
 
That's @this's PR.
 
@Comintern it does for me at least
aw, man, not cool, @this
@MathieuGuindon do you have an entry <UserEditedLogLevel> in your config file?
 
<UserEditedLogLevel>false</UserEditedLogLevel>
fwiw I don't think there's a solution for this
of course I enable logging and now it doesn't crash
 
2:52 PM
when you do, it changes that to <UserEditedLogLevel>true</UserEditedLogLevel>
 
@Comintern confirming ShadowedDeclarationInspection correctly reporting shadowed Str function
 
when it's <UserEditedLogLevel>false</UserEditedLogLevel> (the default), it will check the <MinimumLogLevel>, determine if it's Trace then set it to Off
this is done at the shutdown.
 
@MathieuGuindon OK, that confirms that I'm seriously in need of an update.
 
Once you have edited the log level anytime UserEditedLogLevel is set to True and shutdown won't try to change the MinimumLogLevel anymore.
 
@this should be true if any of the settings aren't the defaults
 
2:55 PM
um. why?
all it cares about is MinimumLogLevel.
 
The old behavior was to start new users with logging completely disabled.
 
I will assume @Comintern meant new, not needy
 
Freudian slip or auto-correct... You decide...
 
:D
 
crashes when I bring up a code pane or a RD UI before/during initial parse
 
2:57 PM
hmm. not sure how that's relevant.
 
nothing in the logs
 
GTG; will try to repro when I can
 
actually I can reliably trigger a crash by merely clicking the empty client area
 
doesn't sound like a problem w/ settings
 
could be anything really
VBEEvents?
hooks?
 
3:00 PM
btw thinking about it the problem is that if the settings were changed and they pull the new version, they get the new setting set to false and then lose the log setting
but that's nothing to do w/ the crash
i think that's only an one-time annoynance to developers, right?
 
I think we're getting support tickets for users with trace logging enabled :)
 
well, it's only once after successful install & running the first session. Seems best thing to do to ensure that we can get log if they have problem running it for first time.
 
3:19 PM
Hmmm... clicking an empty part of the client area might be something to do with setting the selection in the command bar.
I didn't see any changes in that event path recently though. Any recent changes in the DeclarationFinder?
 
not since last month(?) or sometime before that, I think
 
Yeah, that sounds about right.
 
3:37 PM
 
@Hosch250 LOL
Halloween party tonight (the kids have been ecstatic over this all week!), and then I need to carve the pumpkins this weekend..
 
Another XKCD I hadn't seen.
 
wow
that ones pretty funny
 
This one is a classic.
 
3:56 PM
> Can't and shouldn't
 

« first day (1603 days earlier)      last day (1577 days later) »