« first day (659 days earlier)      last day (2521 days later) » 

12:01 AM
RELOAD!
[Cardshifter/HTML-Client] 1 opened issue. 4 issue comments.
[retailcoder/Rubberduck] 7 commits. 153 additions. 108 deletions.
[rubberduck-vba/Rubberduck] 6 commits. 5 opened issues. 17 issue comments. 82 additions. 2026 deletions.
 
12:38 AM
> Argument 2: cannot convert from 'System.Collections.Generic.IDictionary<System.Tuple<string, Rubberduck.Parsing.Symbols.DeclarationType>, Rubberduck.Parsing.VBA.Attributes>' to 'System.Collections.Generic.IDictionary<System.Tuple<string, Rubberduck.Parsing.Symbols.Declaration>, Rubberduck.Parsing.VBA.Attributes>' Rubberduck.Parsing
wtf C#?
 
@Vogel612 I see it.
> Argument 2: cannot convert from 'System.Collections.Generic.IDictionary<System.Tuple<string, Rubberduck.Parsing.Symbols.Declaration**Type**>, Rubberduck.Parsing.VBA.Attributes>' to 'System.Collections.Generic.IDictionary<System.Tuple<string, Rubberduck.Parsing.Symbols.Declaration>, Rubberduck.Parsing.VBA.Attributes>' Rubberduck.Parsing
 
~facepalm
 
Eh, I can't get it to stay bold.
 
markdown borks in quotes in chat.
 
It isn't the quote. I tried removing that.
I'm pretty sure it is the < character, but I can't say for sure.
Oh, the ' character?
 
12:51 AM
no clue
 
1:21 AM
@Mat'sMug I think I found a solution to the cancelling problem...
One can create a CancellationTokenSource that observes a given CancellationToken and cancels when the token is cancelled.
this means each vbComponent gets their own CancellationTokenSource linked with the central CTS.
when the central CTS is Cancelled, all component tokens are cancelled
and as long as we hold on to a reference for the linked CTS, we can cancel specific tasks
 
sounds so simple, it must be the right way... lol
so we launch the initial parse task and ask the parser to process all modules; user starts modifying Module1 right away; parser cancels the parse task for Module1, user finishes modifications, parser processes Module1 and starts resolver task; user modifies Module1 again; parser cancels resolver task and starts re-parsing Module1, then restarts resolver task, then reports "ready" state
right?
no wait, no we still aren't requesting per-module reparse. that's for the keyhook to handle
hmm
I'll be working on other issues, far away from the parser
 
LOL, I could have told you that ages ago!
I didn't know that was your problem!
Yeah, you just pass that in and check whether the token is canceled.
And please don't use the ThrowIf...() version, use an if and exit.
 
@Hosch250 ThrowIf is easier for our purposes, since we have multiple long-running different subtasks
but if cancellation happens we can discard all resources and terminate abruptly
 
But then you have to catch it.
I don't care as long as you catch it.
Last time @Mat'sMug did it, he didn't catch it and it made debugging almost impossible.
 
aight :)
 
1:33 AM
the "oh" part was the linking of tokens. never realized you could do that until I read that SO answer yesterday
@Vogel612 the RubberduckParserState isn't changing its interface, right? I mean, will I cause conflicts if I work on, say, getting the search results to refresh correctly?
nevermind
 
I'm having to think a little harder, but up to now... no
 
I need to work on the Code Explorer
 
[rubberduck-vba/Rubberduck] dimitrimitropulos pushed commit 5a62ea0d to next: Adds DefLngLng and DefLngPtr from VB7
Merge pull request #1253 from dimitrimitropulos/patch-2

Adds DefLngLng and DefLngPtr from VB7
 
oh crap
that just caused conflicts with @awgaya's PR
 
[rubberduck-vba/Rubberduck] build for commit f3e88a7b on next: AppVeyor build succeeded
> Hotkey configuration is currently storing strings like `CTRL-P` instead of `^P` - while it's nice for display, the `HotKey` class isn't expecting a `string key` in the form of `CTRL-P`, and that's causing issues.

Hotkey settings UI needs a checkbox for each modifier key, and should store settings in a format that `HotKey` can read.

private static readonly IDictionary<char,uint> Modifiers = new Dictionary<char, uint>
{
{ '+', (uint)KeyModifier.SHIFT },
 
 
2 hours later…
3:24 AM
[retailcoder/Rubberduck] retailcoder pushed commit adc902c0 to next: closes #1257. Hotkeys are working ready to activate their corresponding action
 
Does the VBA Reflection API support export? I.e. is it much work to create CodeCleaner functionality (and have it exposed in the API)?
 
No. Well, not now. It's bare bones atm... and it can very easily feature-creep, too ;-)
 
3:42 AM
I mean, it should probably be a separate project in the solution.. if you could do reflection in VBA, how would you use it?
 
I was thinking more of the Code Cleaner capability, but allow a user to automate it.
 
what does it do?
 
Exports everything. Removes everything, then important everything. It's like the decompile option in Access. Dumps all of the pcode and cached data. Reduces files size, stops weird VBA behaviour in VBA projects.
The SDK seems to have a decompile functionality, and that is what Access uses, but Excel doesn't expose it.
 
3:58 AM
interesting
 
 
2 hours later…
5:55 AM
[retailcoder/Rubberduck] retailcoder pushed commit ccc82a41 to next: need to move hotkey/action mapping to composition root
> The constructor speaks for itself:

public App(VBE vbe, IMessageBox messageBox,
IRubberduckParser parser,
IGeneralConfigService configService,
IAppMenu appMenus,
RubberduckCommandBar stateBar,
IIndenter indenter,
IRubberduckHooks hooks,
IEnumerable<ICommand> appCommands)

Dependencies and functionality needs to be factored/regrouped into new classes.
 
6:36 AM
[retailcoder/Rubberduck] retailcoder pushed commit 7730e8f1 to next: hotkeys work
Merge pull request #1248 from retailcoder/next

closes #1246
[retailcoder/Rubberduck] INOPIAE pushed commit a34c647e to next: translation: removed the '&' from all menue entries for the test explorer
[retailcoder/Rubberduck] INOPIAE pushed commit 5596f780 to next: translation: removed obsolete entries "About_"*
[retailcoder/Rubberduck] INOPIAE pushed commit e29bb70a to next: translation: removed obsolete "Inspections_"*
[retailcoder/Rubberduck] INOPIAE pushed commit 3c61cc6b to next: translation: removed obsolete entries for "Quickfix_", SourceControl_" and "Todo_"
[retailcoder/Rubberduck] INOPIAE pushed commit b6c351cc to next: translation: removed some obsolete entries
Merge pull request #1251 from INOPIAE/translation

Translation
[retailcoder/Rubberduck] dimitrimitropulos pushed commit 5a62ea0d to next: Adds DefLngLng and DefLngPtr from VB7
Merge pull request #1253 from dimitrimitropulos/patch-2

Adds DefLngLng and DefLngPtr from VB7
Merge pull request #62 from rubberduck-vba/next

Finalized Hotkeys
> Ready for 2-step hotkeys, just need the LL keyhook
[rubberduck-vba/Rubberduck] build for commit 659ad543 on unknown branch: AppVeyor build failed
BUILD FAILURE!
[retailcoder/Rubberduck] retailcoder pushed commit 0e9801b7 to next: added missing file
[rubberduck-vba/Rubberduck] build for commit 0e9801b7 on unknown branch: AppVeyor build failed
BUILD FAILURE!
[retailcoder/Rubberduck] retailcoder pushed commit d1d3e704 to next: ignored SettingsControlTests.cs - these tests actually physically modify the contents of the settings file on disk.
[retailcoder/Rubberduck] retailcoder pushed commit f250fdf9 to next: removed unused class
[rubberduck-vba/Rubberduck] build for commit d1d3e704 on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit f250fdf9 on next: AppVeyor build cancelled
BUILD FAILURE!
[rubberduck-vba/Rubberduck] build for commit 9f7dd04e on next: AppVeyor build succeeded
[retailcoder/Rubberduck] retailcoder pushed commit 6eac8f74 to next: #1231 encapsulate field is cancellable
[retailcoder/Rubberduck] retailcoder pushed commit aa5e422f to next: #1231 - rename project quickfix is cancellable
[retailcoder/Rubberduck] retailcoder pushed commit 16603abe to next: #1231 rename declaration quickfix is cancellable
[retailcoder/Rubberduck] retailcoder pushed commit 86435611 to next: #1231 fixed groupbox label (closes #1231)
[rubberduck-vba/Rubberduck] retailcoder pushed commit 6eac8f74 to next: #1231 encapsulate field is cancellable
[rubberduck-vba/Rubberduck] retailcoder pushed commit aa5e422f to next: #1231 - rename project quickfix is cancellable
[rubberduck-vba/Rubberduck] retailcoder pushed commit 16603abe to next: #1231 rename declaration quickfix is cancellable
[rubberduck-vba/Rubberduck] retailcoder pushed commit 86435611 to next: #1231 fixed groupbox label (closes #1231)
Merge pull request #1260 from retailcoder/next

#1231 cancellable quick-fixes shouldn't reparse when cancelled
[rubberduck-vba/Rubberduck] build for commit 86435611 on next: AppVeyor build cancelled
BUILD FAILURE!
[rubberduck-vba/Rubberduck] build for commit d5356261 on next: AppVeyor build succeeded
 
 
@Duga dafuq
anyway all is good, I'm out
 
@Mat's Mug I'll fix the PR conflicts later in the day and then try to find some tests that break your resolver :P
 
 
8 hours later…
3:41 PM
Should we have an inspection for "confusing accessibility"?
9
Q: Is scoping broken in VBA?

Mat's MugSay you have this code in a module called Module1: Option Explicit Private Type TSomething Foo As Integer Bar As Integer End Type Public Something As TSomething In equivalent C# code if you made the Something field public, the code would no longer compile, because of inconsistent acc...

 
no idea...
But I have a few questions...
Firstly: How and what do I need to "invalidate" / remove in RubberduckParserState when I parse a certain component?
Secondly: Why are ObsoleteCall, ObsoleteLet, EmptyStringLiteral and ArgListWithOneByRef inspections special?
 
@Vogel612 because they inspect parser tokens rather than declarations, so we have a listener for them - and by passing the listeners to the parse task we get their results without re-walking the parse trees
 
we're walking the ParseTree twice anyways
once for Declarations and once for References
I haven't timed it, but I'd expect walking the tree to be faster than building it
 
3:58 PM
@Vogel612 when a component gets reparsed, all declarations for it need to disappear before the updated ones are added.. otherwise the resolver will get confused over dupes
@Vogel612 yeah.. but there's an opportunity to attach listeners right as it's parsing..
Ideally we would also have the declarations listener there, but that's... not possible AFAICT
 
soo.. as you may have seen I did already move the Declarations Listener into the Resolving process
 
Ok
If all listeners can listen to the same walker then I don't mind.. but walking once per listener is a waste of resources
 
true that
but there's nothing generally speaking against having those as ParseTreeWalker Listeners, IIUC
that would significantly change the RubberduckParserState interface though
because they'd just become InspectionResults
 
Right
That breaks 4-5 inspections then ;-)
I like that it would remove members from the interface
"less is more" ... /ISP
Ugh. COM reflection broke the Excel-specific inspections
@Duga you there?
 
4:22 PM
> This code is perfectly legal:

Private Type TSomething
Foo As Integer
Bar As Integer
End Type

Public Something As TSomething

Yet `TSomething` is a *private type*. I would expect `Enum` types to behave the same way. Should we have an inspection for this? What reason is there to make a type `Private` if it needs to be exposed anyway? Would it break anything to make it `Public`?
> These inspections no longer work, since Excel object model's declarations are acquired via COM reflection. Would be nice to get them to work again.
 
4:41 PM
[rubberduck-vba/Rubberduck] build for commit edc1202e on unknown branch: AppVeyor was unable to build non-mergeable pull request
BUILD FAILURE!
> The first problem is fixed. The second one is fixed in general by making whiteSpace a parser rule and not skipping LINE_CONTINUATION tokens anymore.
[rubberduck-vba/Rubberduck] build for commit 02f8f5b8 on unknown branch: AppVeyor build succeeded
 
5:38 PM
@Mat'sMug regarding "multiple IParseTreeListeners" ....
why not something like:
        private class CombinedListener : IParseTreeListener
        {
            private List<IParseTreeListener> _listeners;
            public CombinedListener(IParseTreeListener[] listeners)
            {
                _listeners = listeners.ToList();
            }

            public void EnterEveryRule(ParserRuleContext ctx)
            {
                _listeners.ForEach(l => l.EnterEveryRule(ctx));
            }

            public void ExitEveryRule(ParserRuleContext ctx)
            {
 
6:21 PM
@Vogel612 ha! Clever! I like it!
 
^ composition pattern
 
FTW!
 
I don't think that should even be named Pattern ?
 
6:45 PM
urk... I have so much abstraction-mingling there ...
 
 
1 hour later…
7:52 PM
> There's no more commits to add. I'll add the annotation API with a separate PR.
split combined grammar into parser and lexer grammar for easier maintenance (#1250)

Also, LINE_CONTINUATIONs are now not skipped anymore + are a fragment since they are never used as a standalone token but rather embedded inside other tokens (such as WS)
[rubberduck-vba/Rubberduck] autoboosh pushed commit 13836e97 to next: move preprocessor grammar to shared vbalexer (#1250)
[rubberduck-vba/Rubberduck] autoboosh pushed commit e189f5d9 to next: replace attributes grammar with vba grammar (#1250)
[rubberduck-vba/Rubberduck] autoboosh pushed commit 1c033478 to next: fix eraseStmt + add missing defs / remove not needed def (#1240)
[rubberduck-vba/Rubberduck] autoboosh pushed commit 578da6d3 to next: fix letstmt/subexpression line continuations (#1242)
[rubberduck-vba/Rubberduck] autoboosh pushed commit cd87d1d7 to next: fix fixed length strings (#1245)
[rubberduck-vba/Rubberduck] autoboosh pushed commit edc1202e to next: fix memberprocedurecall line continuations (#1056)
[rubberduck-vba/Rubberduck] autoboosh pushed commit 42c92d1f to next: add declare line continuation regression test (#1056)
Merge pull request #1255 from autoboosh/splitparserlexer

Split combined parser into parser and lexer and fix a few reported grammar issues
[rubberduck-vba/Rubberduck] build for commit e9ef9b3e on next: AppVeyor build succeeded
 
8:10 PM
> This is the current WIP state for the Parser changes I promised to retailcoder. This should enable Multithreaded parsing to happen, as well as achieve the following goals: - Clarify what the Parser does and what it doesn't do - Cancel Parsing on a Per-Component basis or Cancel all currently running Parser processes (even with an external CancellationTokenSource - Keep RubberduckParserState interface unchanged (or at least prevent breaking changes) - Parse Synchronously and Asynchronously...
Things TBD (because it's a WIP): - [ ] Invalidation of ParserState when beginning Parse - [ ] Resolver Cancellation when Starting to Parse a component - [ ] (Optional) Getting ObsoleteLet, ObsoleteCall, EmptyStringLiteral and ByRef inspection listeners out of the RubberduckParserState and have them report InspectionResults instead - [ ] Verification this works correctly - [ ] Actually Replacing the Parser After those things are done, the whole PR will get a rebase to clean up the commits...
and then a fix for the merge conflicts, so don't merge it just yet :+1:
[rubberduck-vba/Rubberduck] build for commit 04c56609 on unknown branch: AppVeyor was unable to build non-mergeable pull request
BUILD FAILURE!
 
Alright... 'nuff for today, off to the Pub!
 
blows up the build then goes out to the pub, just the way we like it :P
2
 
Roslyn tests sure take ages to run.
 
8:30 PM
@Hosch250 haha good catch!
 
Are you going to edit it?
 
9:06 PM
Not now.. feel free to :-)
 
 
1 hour later…

« first day (659 days earlier)      last day (2521 days later) »