« first day (1654 days earlier)      last day (1526 days later) » 

12:00 AM
RELOAD!
[rubberduck-vba/Rubberduck] 1 opened issue. 11 issue comments.
 
@M.Doerner I wonder if it would be better to add values to annotations. Instead of @Exposed, we would have @Exposed(true). That way we don't have false results since it is now always explicit. The absence of the annotation simply means we accept the default value.
 
12:26 AM
WTH is wrong with z-ordering in Windows 10? My VS locals window is stuck on top. Grrrr...
 
 
1 hour later…
1:36 AM
How long has CodeExplorerViewModel.UpdateNodes been broken?
The way it's currently implemented, it will always collapse down to the top level nodes.
 
 
2 hours later…
3:30 AM
Crap. I need to get another SSD :(
Nothing will let me specify the install location anymore :(
So everything is eating space on my C drive.
 
4:04 AM
Well something doesn't look like it belongs there...
@this - are you getting a Rubberduck.Core directory under the root obj directory?
FML, I just Iven'd my build.
Severity	Code	Description	Project	File	Line	Suppression State
Error	CS0006	Metadata file 'C:\Rubberduck\Rubberduck.Main\bin\Debug\net46\Rubberduck.dll' could not be found	RubberduckTests	C:\Rubberduck\RubberduckTests\CSC	1	Active
Error	CS0006	Metadata file 'C:\Rubberduck\Rubberduck.Core\bin\Debug\net46\Rubberduck.Core.dll' could not be found	Rubberduck.CodeAnalysis	C:\Rubberduck\Rubberduck.CodeAnalysis\CSC	1	Active
Error	CS0006	Metadata file 'C:\Rubberduck\Rubberduck.CodeAnalysis\bin\Debug\net46\Rubberduck.CodeAnalysis.dll' could not be found	Rubberduck.Main	C:\Rubberduck\Rubberduck.Main\CS
 
 
2 hours later…
 
6 hours later…
When I remove an annotation, what should I do if there is a comment on the same line?
The RemoveDuplicateAnnotationQuickFix leaves it on the line.
However, for member annotations, that will break all member annotations on lines above it.
So, the comment will have to move somewhere else.The question is: where?
 
11:47 AM
[rubberduck-vba/Rubberduck] build for commit b665b4f3 on unknown branch: AppVeyor build succeeded
 
 
3 hours later…
2:37 PM
@M.Doerner If it's a duplicate annotation, can you append it to the end of the duplicate? If that's too much of a pain, I'd just move it above any member annotations.
 
@Comintern I don't even have an obj directory at the Rubberduck root directory...
 
I do not really ask because of that quickfix but because I plan to write a RemoveAnnotationQuickFix for the MissingAttributeInspection.
 
@Comintern are you still Iven'd?
 
@this Nope. Did a bin/obj wipe, deleted my .vs folder and I'm good. That folder was old, so I'm not sure exactly how it got there. It also hasn't come back since I deleted it.
 
@M.Doerner I'm not sure I have enough context to follow this, but I also don't understand why leaving a comment in place would break the annotations. If it does, then doesn't that actually indicate that the annotations are too fragile and need to be made more robust?
@Comintern Would be interesting to know if @IvenBach has that folder, too.
 
2:41 PM
@M.Doerner I'd still say move it above anything it would break. Maybe add a TODO marker?
 
We scope all member annotations above a member to the member until there is a line without a member annotation.
Moreover, an annotation can have a comment following on the same line.
 
I see. and we're not using VBIDE's StartOfProc & EndOfProc, right?
 
'@Annotation - I added this because blah blah blah
The only thing I see is that in a case like that it turns the comment into a WTF comment.
' - I added this because blah blah blah
 
^ I'd want that comment gone.
 
We do not use the VBE API.
 
2:44 PM
Thought so. Still, I have to say this make it a bit too fragile for my liking. You're now relying on the users to annotate everything correctly.
 
Not relevant to where to put the comment, but what about just removing the @ if there's a trailing comment?
'Annotation - I added this because blah blah blah (TODO)
 
I wonder what it would mean if we were to emulate the procedure scope in the grammar.
@Comintern That feels like another WTF, TBH.
I think as long as the QF says "remove the annotation and its comment", that's good enough.
KISS.
If they really wanted to keep the comment, they can do that before applying the QF.
 
'@Annotation - MUST BE PREDECLARED!
I'd want the keep that, especially on a duplicate removal.
 
Comments left after removal of one of several annotations might look strange anyway.
 
It could also be completely unrelated though.
 
2:49 PM
@Comintern If it's dupe, QF the one w/o comment, no?
 
`'@PredeclaredId @Exposed 'The combination of these annotations is really important.
 
(or just choose one with a better commentary to keep)
oh, btw, need 10K volts for .... commentative comments.
 
Now remove the predeclred ID annotation.
 
umph.
 
2:51 PM
That's why I was thinking of tacking on a TODO marker
 
^
 
TODO - review comment.
 
IOW, if you end up removing a line entirely, take away the comment altogether.
but if the line remains, append a TODO.
 
I'll see what I can do.
 
(I'm more inclined to prepend the TODO, rather than append it, though)
 
2:52 PM
@this What if it has nothing to do with the annotation though?
'@PredeclaredId @Exposed 'It it the caller's responsiblity to blah blah blah.
 
6 mins ago, by this
I think as long as the QF says "remove the annotation and its comment", that's good enough.
 
Run in project?
That could do some serious damage.
 
hmph.
offer QF only if there's no comments?
just to ask again - why couldn't we have a grammar construct (or something like that) that corresponds to hte start/end of procedure in VBE?
 
You mean other than the module body context?
As in following the VBE's weird rule for whitespace?
 
does it correspond exactly --- yes.
I understand it doesn't ATM.
 
3:00 PM
I wouldn't be hard to add to the grammar - it would be hard to fix the millions of things it breaks though.
 
if users sees the line and the RD's annotation works in other member's scope or failing in its own scope correctly, it's going to look weird.
maybe it doesn't have to be a grammar construct.
We do have the EndOfStatement.
and I think that always correspond to the ending correctly.
 
That one does, but the the start of proc line is ...odd IIR.
I'm not entirely sure I understand the rule.
 
The point being that if we understand the rule, then we wouldn't have be having this discussion at all
and users don't have to know the magical tricks to get annotations to work
 
Right.
I'm pretty sure it's "documented" either in the chat history or one of the issues. Finding it...
 
yeah it was ThunderFrame, IIRC
 
3:05 PM
IIR it came up with an ignore annotation.
Unrelated question.
When I'm determining whether to dim a reference as unused, I'm checking for forward references.
 
boils down to this: at the end, the comments/statements must be in previous scope as long it's continuous; as soon as we get a whitespace, this becomes a new scope for the next procedure, unless it's the last one of the module.
 
I.e., Excel references Office, Excel is pinned, so Office is considered "used".
It seems that the common libraries are kind of "inbred". Should I make that a user setting instead?
The main rational for checking forward references is that if they're missing, the resolver works harder because they're unbound in the main reference.
 
hmm but you can have a working VBA project that only references Excel, without hte Office, right?
 
Yes.
 
doesn't resolver already pick it up?
 
3:09 PM
Or without stdole for that matter, but it adds both by default.
 
Yeah.
 
It gets the types, but it can't bind them.
 
FWIW, if we aren't using those in our user codebase, then they're unused.
because there's nothing in codebase to bind it to?
 
I.e., the Excel declaration is Foo As OfficeType, with OfficeType unbound if Office isn't referenced.
We're currently not creating declarations for forward referenced types. If the forward reference is a project reference, they bind.
You can see what I'm referring to if you remove Office from an Excel project and look at the log file after the parse.
 
but if there's no code in the user's VBA project that uses Office types, even via Excel's methods, then... I'm not seeing the problem?
 
3:14 PM
You get roughly 500 lines of this:
2018-12-16 09:14:07.4738;WARN-2.3.6924.15836;Rubberduck.Parsing.VBA.ReferenceManagement.CompilationPasses.TypeAnnotationPass;Failed to resolve type MsoPresetCamera;
2018-12-16 09:14:07.4738;WARN-2.3.6924.15836;Rubberduck.Parsing.VBA.ReferenceManagement.CompilationPasses.TypeAnnotationPass;Failed to resolve type MsoPresetMaterial;
2018-12-16 09:14:07.4738;WARN-2.3.6924.15836;Rubberduck.Parsing.VBA.ReferenceManagement.CompilationPasses.TypeAnnotationPass;Failed to resolve type MsoPresetLightingSoftness;
Oh, it's not a problem at all. But by dimming them or inspecting them we're encouraging the user to remove them.
 
Fun
Here's a different issue, though.
I need to check if this apply to Office - you know how if you have a VBA project that's written in Excel 2016... it references Excel 16.0, right? Load that same file in a Excel 2010, and the reference is automatically fixed up to 14.0, no sweat.
 
We can do that.
 
However, if you reference Word 16.0 in that VBA project, then it get hosed when loaded in Excel 14.0.
Does Office exhibit the same behavior?
 
Yes, it does.
// TODO: If for some reason the VBA reference is broken, we could technically use this to repair it. Just a thought...
Hell, we could even check to see if adding a lower version would create problems with unbound members.
 
In that case, I wouldn't want to encourage users to keep Office referenced because they might load it on a VBE w/o RD and get a broken project for that reason. That is a big deal esp. with Access since they usually distribute it to various computers of varying OSes/Offices.
Considering also that if there's an VBA project that uses Excel 2016's method... say Query something that was introduced recently. Take that to 2010, and now it's hosed still even though the reference was automatically fixed because there's no method fo rthat.
 
3:21 PM
OK. I'll make it a user setting, disabled by default.
 
So you'd have to know what got added in in the 16.0's object library in order to know whether the code is safe to use in previous versions or not.
reasonable.
 
[ ] Ignore forward reference when checking unused libraries
@this Not really. RD would find the broken reference, see that there's a prior version, and do a member not on interface inspection only for that library.
It could then warn that it found member uses that aren't in the lower version.
 
That presumes that you have the lower version available to you
e.g. multiple side by side install of Office
which might not be the case
 
Right, but RD knows that.
This would only be for broken references.
 
doesn't help me if I'm distributing this file to other computers that doesn't have RD installed.
(but I think that's a unlikely problem because a good developer should be using the lowest version to start with)
 
3:25 PM
No, but it's better than what the VBE offers.
 
agreed
 
I'm going to include the unfuctoring of the CE in the references PR if it doesn't get merged first. I need to fix all the broken stuff to get the enhancements working.
@M.Doerner There's a comment in the SimpleNameTypeBindingTests that I don't understand the purpose of. Do you have any idea why this const "has to" be an empty string?
private static readonly string ReferencedProjectFilepath = string.Empty; // must be an empty string
That should only be true if it's an unsaved project, but we're testing it as if it's a reference.
 
I do not know hwy that is there.
I only know that all user QMNs have an empty string as reference path.
 
Only reason I bring it up is because when I dummy'd up an identifier for the path->projectId lookup, those tests broke.
I wonder if we're using that as an assumption elsewhere in the code.
 
4:05 PM
@VBasic2008 Welcome to The Pond. If you want to ask specific questions about the advantages of ByVal/ByRef - this is a good place to ask. You will get a better answer about the technical whysas well as any advantages.
@pond I referred him here before I said something that might ruin his VBA understanding for life.
It was a discussion around my answer here:
1
A: VBA function adding the values of two cells

QHarrYou can also use Evaluate Public Function Additionex(ByVal num1 As Double, ByVal num2 As Double) As Double Additionex = Evaluate(num1 + num2) End Function If you want something more generic that takes ranges (your two cells as arguments) and can handle errors consider something like: Publ...

 
@QHarr @VBasic2008 I can't add talk privileges to users who haven't visited Code Review.
 
@Comintern Sorry :-(
 
NP, I'll comment on your answer.
 
< oh dear.....>
@Comintern thanks
 
@QHarr NP
 
5:03 PM
@this which folder is that, Bin/Obj? Those I’ve tried deleting.
 
5:33 PM
@IvenBach no, if you look at the screenshot carefully, Comintern managed to get a obj folder in the root of the Rubberduck folder
14 hours ago, by Comintern
user image
 
Ah. On phone and didn’t look at image. I’ll check for that later today.
 
6:20 PM
Programmers routinely say "readable" when they mean "familiar to me at this moment". You can safely make the change in your mind as you hear or read the word "readable" in this context.
 
> I don't believe so but I will check on Monday morning (it's possible the IT department installed Excel 2010 for compatibility reasons).
 
7:01 PM
> If 2010 was installed on top of 2016, then the registrations are likely broken... but then that doesn't explain how RD worked before the update (with broken registrations RD wouldn't have worked before)... note that non-chronologically installed side-by-side Office installs aren't a Microsoft-supported scenario either (and chronological side-by-side installs should work, but are discouraged).
 
7:21 PM
And this is why Rubberduck inspections flag Hungarian-prefixed, disemvoweled, and number-suffixed identifiers and says "use meaningful names" - and with refactor/rename the only hard part left is to... find a good, meaningful name for your identifiers 😀 https://twitter.com/rubberduckvba/status/1074374944182685697
 
 
1 hour later…

« first day (1654 days earlier)      last day (1526 days later) »