« first day (686 days earlier)      last day (2494 days later) » 

00:01
RELOAD!
[retailcoder/Rubberduck] 8 commits. 135 additions. 118 deletions.
[rubberduck-vba/Rubberduck] 9 commits. 241 additions. 205 deletions.
[Zomis/Duga] 7 commits. 144 additions. 15 deletions.
[Zomis/test] 4 commits. 6 additions.
00:16
@Mat'sMug that VB6 code adviser supposedly has snap-in inspections, but I can't find how to define one.
00:48
Now I'm really tempted to try a VB6 Rubberduck build
> Rubberduck.Setup.1.4.3.0.exe (4.32MB) - Downloaded 2712 times.
Last updated on 2015-07-08
Like, 2.0-tempted
@Mat'sMug you need to custom install the code adviser, and check the developer options. Beyond that, I can't find the definitions.
 
4 hours later…
05:08
[retailcoder/Rubberduck] retailcoder pushed commit e4ebaca3 to next: restricted SelfAssignedDeclarationInspection to non-ValueType variables with a specified type
[retailcoder/Rubberduck] retailcoder pushed commit c84e8bc4 to next: implemented ObjectVariableNotSetInspection; closes #383
05:32
[retailcoder/Rubberduck] retailcoder pushed commit d7da07de to next: fixed bug with SelfAssignedDeclarationInspection
 
1 hour later…
06:32
> Private Sub Workbook_Open()

Dim target As Range
target = Range("A1")

target.Value = "forgot something?"

End Sub

Also includes other fixes and tweaks
[rubberduck-vba/Rubberduck] build for commit d7da07de on next: AppVeyor build cancelled
BUILD FAILURE!
[rubberduck-vba/Rubberduck] retailcoder pushed commit 6791992e to next: remove built-in declarations for removed references
[rubberduck-vba/Rubberduck] retailcoder pushed commit d30906f9 to next: random tweaks to mousehook and codepanerefactorrenamecommand
[rubberduck-vba/Rubberduck] retailcoder pushed commit e4ebaca3 to next: restricted SelfAssignedDeclarationInspection to non-ValueType variables with a specified type
[rubberduck-vba/Rubberduck] retailcoder pushed commit c84e8bc4 to next: implemented ObjectVariableNotSetInspection; closes #383
[rubberduck-vba/Rubberduck] retailcoder pushed commit d7da07de to next: fixed bug with SelfAssignedDeclarationInspection
Merge pull request #1344 from retailcoder/next

ObjectVariableNotSetInspection
[rubberduck-vba/Rubberduck] build for commit b62455a1 on next: AppVeyor build succeeded
wow, I just noticed, we have more followers than @MZTooolsSoftware on Twitter!
I think this is it
TTGTB
07:00
@Mat'sMug: several things are already covered in RD, such as source control support, I just need some time to get used to it. I'll get back here once additional wishes come up, but I think I'll wait until release of 2.0 and have a look at that first. Other beefs that I do have are currently more about the language itself.
 
3 hours later…
09:43
> The lexer shouldn't actually produce a short literal because that's not part of the spec. Also, non-floating numbers with an exponent should actually be classified as floating literals. Here are the correct lexer rules:

```
FLOATLITERAL :
FLOATINGPOINTLITERAL FLOATINGPOINTTYPESUFFIX?
| DECIMALLITERAL FLOATINGPOINTTYPESUFFIX;
fragment FLOATINGPOINTLITERAL :
DECIMALLITERAL EXPONENT
| DECIMALLITERAL '.' DECIMALLITERAL? EXPONENT?
| '.' DECIMALLITERAL EXPONENT?;
INTE
> Lexer rules:

```
GEQ : '>=';
ALTGEQ : '=>';
LEQ : '<=';
ALTLEQ : '=<';
NEQ : '<>';
ALTNEQ : '><';
```

The ALT-rules are currently missing. The VBE actually transforms the alternative into the "main" one but I don't know if every VBA editor out there does that.
> ProjectDeclarations have a new priority id (?) which should probably be saved in the Declaration class. Since it's long overdue to introduce a class hierarchy we might as well use this opportunity to refactor the code.

One class per DeclarationType-enum member?
> Found a solution to this, already tested locally but haven't had time to make a PR yet.
> This is allowed:

`Implements VBAProject.ITest`

But destroys the parser.

"Correct" parser rule:

`implementsStmt : IMPLEMENTS whiteSpace valueStmt;`

I'd like to take this as an opportunity to sneak in expressions per VBA spec by creating an ExpressionParser. The expression parser could parse the valueStmt and build an expression tree. We could then hand off this tree to the binder. I'd start with simple-name-expressions in this case because that's what we currently support. This w
> Found a solution to this, already tested locally but haven't had time to make a PR yet.

It's just like @retailcoder and @dimitrimitropulos said, by considering the fact that these conditional compilation keywords may only appear on a separate line we can catch the cases described in the first comment.
10:48
> I'm not sure that this is a valueStmt. Isn't it more correct to see this as a FQN? or are these in fact valueStmts and only the resolver gives them the notion of being a Type?
> Would it not be easier for the resolver if these were not separate Lexer rules, but combined ones?

GEQ : '>=' | '=>';
[...]
> Would it not be easier for the resolver if these were not separate Lexer rules, but combined ones?

GEQ : '>=' | '=>';
[...]
> There's a bit of a chaos in the grammar right now because valueStmts should actually be expressions.

The VBA spec says that the implements-directive takes a class-type-name: https://msdn.microsoft.com/en-us/library/ee177434.aspx

A class-type-name in turn is defined as a defined-type-expression: https://msdn.microsoft.com/en-us/library/ee200228.aspx.

A defined-type-expression is then defined as simple-name-expression (basically an "ambiguousIdentifier") and a member-access-expression (
> There's a bit of a chaos in the grammar right now because valueStmts should actually be expressions.

The VBA spec says that the implements-directive takes a class-type-name: https://msdn.microsoft.com/en-us/library/ee177434.aspx

A class-type-name in turn is defined as a defined-type-expression: https://msdn.microsoft.com/en-us/library/ee200228.aspx.

A defined-type-expression is then defined as simple-name-expression (basically an "ambiguousIdentifier") or a member-access-expression (t
> There's a bit of a chaos in the grammar right now because valueStmts should actually be expressions.

The VBA spec says that the implements-directive takes a class-type-name: https://msdn.microsoft.com/en-us/library/ee177434.aspx

A class-type-name in turn is defined as a defined-type-expression: https://msdn.microsoft.com/en-us/library/ee200228.aspx.

A defined-type-expression is then defined as simple-name-expression (basically an "ambiguousIdentifier") or a member-access-expression (t
> You're right, that makes a lot more sense, thanks :)
 
1 hour later…
12:24
> With the following code:
```
Public Sub test(ParamArray someArray() As Variant)

End Sub
```

the Code Inspections throws an "implicit ByRef parameter". The "Fix" then changes the code to this:
```
Public Sub test(ByRef ParamArray someArray() As Variant)

End Sub
```
which is a compile error.
14:26
> There's a new class ProjectDeclaration that contains the references to other projects with the priorities. Because this happens in the declaration gathering phase we can't add ProjectDeclarations as other references. I changed the Reference.ReferenceId to ProjectId and also switched from using the ProjectName as ProjectId for references to using a combination of the name + path. Otherwise could not differentiate between two libraries with the same name. Not sure if this will always work...
though, there might be some cases I don't know about. Not so sure whether it's possible to reference two libraries with the same name in the same DLL either.
[rubberduck-vba/Rubberduck] build for commit 729d09ca on unknown branch: AppVeyor build succeeded
> …fixes #1350)
[rubberduck-vba/Rubberduck] build for commit 06b930c5 on unknown branch: AppVeyor build failed
BUILD FAILURE!
[rubberduck-vba/Rubberduck] build for commit debc72e9 on unknown branch: AppVeyor build succeeded
 
3 hours later…
17:40
> I lost track of how many times I've done something bone-headed and either crashed the host application or put it into an irrecoverable not responding state and had to end-task it. One of the more overlooked features of Visual Studio is that it saves all of your open documents when you build a project. It would be nice to be able to recover from one's own stupid decision to run something before the host document is saved.
18:40
Good luck this weekend y'all! Hope the MVP presentation goes well.
aye, I need to package that pre-release build tonight - no ifs, no buts!
@puzzlepiece87 have you read the 2.0a release notes yet?
19:11
@Mat'sMug I have now, thanks for the link!
For EmptyStringLiteralInspection, I believe there may be a few edge cases that require it.
*that require "" instead of vbNullString
If I remember any of them I will pass them on
Oh oh
Interesting, got an example?
It has to do with detecting empty cells I think
Let me try to find something I've written
Oh, I think I am confusing the case
Yes I am
I am confusing the case where there can be a Cell1.Value = "" but Cell1 Is Empty = False.
That's definitely a thing that happens, it's frustrating and requires clearing.
@INOPIAE @Vogel612 FYI I merged a new last-minute inspection yesterday, AFAIK it's the only missing German translation (see ObjectVariableNotSetInspection)
@puzzlepiece87 ah, yes I see.. perhaps that could be the basis of another inspection?
19:17
I'm not sure how useful that would be to others, but I have had a few cases where I've needed empty cells and been frustrated by that.
I would not have mentioned it, for lack of value reasons, if I hadn't momentarily confused it for a ""/vbnullstring conflict
Keep in mind that inspection severity can be configured, from DoNotShow to Error
> This would definitely go in the "experimental" category at this point - I need to poke around to see if I can find a suitable COM event. That would go far beyond lucky though.

If not, it would probably be substantially more work. My current thought from that angle would be to put a trampoline function on the entry points of the compiler that calls back to RD and delays compilation until RD says it's OK.

This is tangentially related to my pondering about replacing the code pane - it wou
IMO it's a very good inspection, could be worded as "Cells containing an empty string are not considered 'empty'. If this is looking for empty cells, the code will not work as intended." -- even an @Ignore EmptyCellCheckInspection annotation on top of that line would be informative about the code's intent I think.
20:11
Oh cool, then I am glad it's potentially helpful :)
I'm not a real developer, but I figured that might add more overhead than it was worth. I'm glad it might be a useful feature :)
I'm going to try to reproduce that for you to make absolutely sure I have it straight
when you have is sorted out, make an issue for it on GitHub!
20:43
[rubberduck-vba/Rubberduck] autoboosh pushed commit 06b930c5 to next: fix paramarray incorrectly flagged as missing ByRef param mechanism (fixes #1350)
[rubberduck-vba/Rubberduck] autoboosh pushed commit debc72e9 to next: fix failing test
Merge pull request #1352 from autoboosh/paramarrayfix

fix paramarray incorrectly flagged as missing ByRef param mechanism (…
[rubberduck-vba/Rubberduck] autoboosh pushed commit 77f79942 to next: shortliteral + neq/geq/leq cleanup (#1345 and #1346)
Merge pull request #1349 from autoboosh/shortliteralfix

shortliteral + neq/geq/leq cleanup (#1345 and #1346)
Not able to reproduce at this time unfortunately
Not sure if they changed something from Excel 2010 to 2013, which we just upgraded to.
If I am able to reproduce in the future I'll report it on github.
cool!
@Mat'sMug The parser can be MIT now!
The only thing that needs to be GPL is the Smart Indenter module.
20:48
@Hosch250 meh
when can we remove the gpl notice at the top? we changed it so much lol
@awgaya I thought you completely rewrote it?
[rubberduck-vba/Rubberduck] build for commit d5efed8d on next: AppVeyor build failed
BUILD FAILURE!
I think the best thing to do would be to ping the original author and ask permission
20:49
Oh, I thought @awgaya rewrote it from scratch.
yes but it broke everything so now I'm trying to sneak it into next without mat's mug noticing
2
because the entire codebase uses the parser contexts
Oh, I thought it was merged already for some reason.
I did send a PR yes but we decided to close it again
@awgaya Need help?
I have merge powers, although I suspect I wouldn't have them long if I merge it :P
2
@Hosch250 IMO it's still derivative work
20:50
(No, I won't merge it.)
it's ok but thank you, this approach is probably better. It's probably too risky to do such a major change right before the 2.0 release anyway.
@Mat'sMug BTW, why don't you just release the code explorer as-is anyway?
It is just incomplete like the rest of it.
because as-is, it's commented-out lol
Well, you could un-comment it.
also, ...it just doesn't work
and it's a source of errors
and frustrations
20:51
Oh.
basically it's not even ready for an "alpha" release :)
[rubberduck-vba/Rubberduck] build for commit ee0fdab5 on next: AppVeyor build succeeded
> This only prepares the ground for the resolver to be able to correctly disambiguate colliding names, correct?
> Yes, exactly. The next PR will include the first expression binding process using the new project declaration.
[rubberduck-vba/Rubberduck] autoboosh pushed commit 729d09ca to next: associate project references correctly and in the correct order (#1340)
Merge pull request #1351 from autoboosh/declarationhierarchy

associate project references correctly and in the correct order (#1340, #1347)
[rubberduck-vba/Rubberduck] build for commit e2f75e82 on next: AppVeyor build succeeded
21:16
aaand that's it, I've committed:
The countdown has started - I'll post on Rubberduck News as soon as it's up! #AlmostThere #NextReleaseRocks #VBA https://t.co/3zjc83fdAy
awesome :)
that background picture lol
21:36
@awgaya aye I need to update that!
21:52
I'm getting an ever flowing stream of RuntimeBinderExceptions in Rubberduck.dll and System.Core.dll that is bringing the VBE to it's knees. Any idea why?
(trying to find and file more grammar issues ATM)
can you post some detailed exception messages?
sure! from the output window?
yeah
some example code would be nice too if possible
well this is strange, now I'm getting a parser error (nothing has changed)
gimme one second and I'll get you what you asked for asap
here's the code that caused it (new project, new class, nothing else but this code in the class)
'no logging
Option Explicit

Private vaOutputHeaders() As String
Private vaOutputColumns() As Variant
Private vaOutputFormats() As Variant
Private vaInputHeaders() As Variant
Private vaInputColumns() As Variant
Private vaInstances() As Integer

Private dOutputHeaders As New Scripting.Dictionary
Private vaOriginalInputHeadersRow As Variant
Private vaOutput As Variant

Private i As Long
Private j As Long
Private headersMapped As Integer
Private haveMapped As Boolean
here's the Output
KeyboardHook: Attached
MouseHook: Attached
Hotkey '^`' hooked successfully to command 'Rubberduck.UI.Command.ReparseCommand'
Hotkey '^P' hooked successfully to command 'Rubberduck.UI.Command.IndentCurrentProcedureCommand'
Hotkey '^M' hooked successfully to command 'Rubberduck.UI.Command.IndentCurrentModuleCommand'
Hotkey '^T' hooked successfully to command 'Rubberduck.UI.Command.FindSymbolCommand'
Hotkey '^+I' hooked successfully to command 'Rubberduck.UI.Command.InspectionResultsCommand'
Hotkey '^+T' hooked successfully to command 'Rubberduck.UI.Command.TestExplorerCommand'
22:08
Dang, when did that break?
it has been doing that for the last two days, but I figured it was me (didn't want to bother you guys until I was out of ideas)
I'm trying to isolate what causes it now
looks like it can be parsed without errors
yeah sorry, the parser error was different thing
no parser error, false alarm
(here, anyway)
np
can you break on that runtimebinderexception find out where in the code the exception is being thrown?
22:14
@awgaya has to be in Declaration.IsArray or something.. that was fixed at one point
we might be able to remove that dynamic code if we create subclasses for the declaration class, right? Just like with project declaration
paramList = (VBAParser.ArgsCallContext)proc.argsCall();
Exception thrown: 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' in Rubberduck.dll

Additional information: 'Rubberduck.Parsing.Grammar.VBAParser.ICS_S_VariableOrProcedureCallContext' does not contain a definition for 'argsCall'
Perhaps. I just got home, will be on shortly after dinner; if you can fix it quick and PR right away, I'll merge it right away and then focus on the release build
paramList is Null
> The immediate window limits line lengths to 1023 visible characters, so any value (that has lines with more than 1023 characters) is rendered in the immediate window with line-breaks inserted by the VBE.

If you want to subsequently use that text in another context (eg SQL in SSMS, XML in Visual Studio, or Lorem Ipsum in Notepad++), then the value that is copied from the immediate window needs to be pasted into the target context and then be manually corrected. That's tedious and error prone
22:24
@Duga sounds like an X-Y problem...
So I have it reduced:
Option Explicit

Private x() As String

Public Sub Add(ByVal y As String)
ReDim Preserve x(0): x(0) = y
End Sub
This causes the RuntimeBinderException for me
(although before, since there were more lines doing the same thing, it was many more of them, or sometimes just an endless stream)?
I hate to go, but I have to jet. I will look deeper into this later if you guys don't figure it out
@MitropoulosMitropoulos oh I know exactly what's causing this
No worries
@Mat'sMug given there are three examples, maybe it's an X-YYY problem...
22:40
lol
22:54
> There's no [easy] programmatic access to the immediate pane; if debug output needs to be used, then it should be output to a file, no?
23:10
how does that work with misusing the helpfile as project id exactly?
there's kind of a mismatch between project ids added as a reference and project ids of projects we actually parse. References use the project.name and parsed projects use the project helpfile?
> Copying the selection to clipboard,and then modifying the clipboard contents would do it.

Writing to a file would be better, but you don't always want to do that in a debugging situation.

If there was a COM exposed object, then you could do something like:

```vb
Public Debug2 as New RubberDuck.Debug

Sub dummy
s = String(10000,"*")
Debug2.Print s
End Sub
```
[retailcoder/Rubberduck] retailcoder pushed 12 commits to next (only showing some of them below)
Merge pull request #1342 from retailcoder/next

Disabled Code Explorer
Merge pull request #1344 from retailcoder/next

ObjectVariableNotSetInspection
[retailcoder/Rubberduck] autoboosh pushed commit 77f79942 to next: shortliteral + neq/geq/leq cleanup (#1345 and #1346)
[retailcoder/Rubberduck] autoboosh pushed commit 729d09ca to next: associate project references correctly and in the correct order (#1340)
[retailcoder/Rubberduck] autoboosh pushed commit 06b930c5 to next: fix paramarray incorrectly flagged as missing ByRef param mechanism (fixes #1350)
[retailcoder/Rubberduck] autoboosh pushed commit debc72e9 to next: fix failing test
Merge pull request #1352 from autoboosh/paramarrayfix

fix paramarray incorrectly flagged as missing ByRef param mechanism (…
Merge pull request #1349 from autoboosh/shortliteralfix

shortliteral + neq/geq/leq cleanup (#1345 and #1346)
Merge pull request #1351 from autoboosh/declarationhierarchy

associate project references correctly and in the correct order (#1340, #1347)
Merge pull request #71 from rubberduck-vba/next

sync with main repo
@awgaya good point. if the reference is a VBProject in the IDE, its ID should match that of the project in question, yeah. be it just for semantics. also, we're ignoring any GUID-less reference for COM "reflection" (if there's no typelib then the COM "reflection" code bombs anyway)
is there a way to associate a vb reference with a vb project? are they connected somehow?
a referenced VBProject will have a filename (you can't reference an unsaved project), so the paths/filenames will match
and, well, the Name too
yeah but the name doesn't have to be unique right
and currently we use the hashcode of the vbproject instead of the filename
23:24
@awgaya the name does have to be unique - VBAProject can't reference VBAProject
> Name conflicts with existing module, project, or object library
oh I see
..and we can't use filename until project is saved
I meant to ask you something else as well, why did you use the referenceid in the rubberduckparser's synccomreferences method?
instead of building a project id
...it didn't occur to me that the two would actually be ProjectId's!
I only realized while reviewing your PR
yeah, dat "oh" moment
so.
ok, so that reference id doesn't happen to be the vbprojects hashcode by chance then
23:29
Declaration._isTypeSpecified was never assigned. One down.
@awgaya nope. it's ...made-up :(
would taking the filename work in case there is one? I have no idea what the consequences would be
e.g. take the filename if there's one, otherwise take the hashcode of vbproject or something like that
well the full path rather
the reference's filename?
there's always going to be one
yes, but the projects we parse don't have to be saved. So it would be OK to use the project's full path if there's one, otherwise fall back to the hashcode?
for ProjectId?
yeah
23:35
File > SaveAs would blow it up, no?
of course we could just store it separately but I'm not sure what the point of the id would be then lol
the role of ProjectId is to be able to match a VBProject instance (from the VBE) to a VBProject instance (from the parser state) - basically it's fundamental that once assigned, it never changes.
otherwise we'll have a memory leak in the parser state
ok
we could just store the filepath separately then, but it would have to somehow trigger a refresh of the state?
a saveas operation I mean
wouldn't that be wasteful?
no idea lol
is there a better way?
thunderframe would probably start hooking the saveas dialog by now lol
23:40
lol
why wouldn't there be an easy way of connecting a reference and a vbproject? what about that GUID on the reference class?
ok, how about this: when we establish that a reference is pointing to a project in the VBE, we fetch that project from parser state and use its ProjectId as the ReferenceId - whatever that ProjectId is
ah well I guess a reference doesn't have to be a vbproject -_-
when the reference is a COM reference, the ReferenceID can be the filename, or the GUID
yeah
OK I'll give that a try, thanks
23:46
[retailcoder/Rubberduck] retailcoder pushed commit 193c66a2 to next: reinstated cached results for IsArray, HasTypeHint and IsTypeSpecified.
BindingExceptions should be under control now
somehow the fields were still there, but they were never assigned
weird
very
setting all module states to LoadingReferences just to get the parser to report "Loading References" state was a huge mistake
huh?
ah btw, wasn't there a trick involved in finding out whether a project is saved? it throws an IO exception
catch(IOException) I guess ;-)
23:58
kk

« first day (686 days earlier)      last day (2494 days later) »