« first day (1440 days earlier)      last day (1740 days later) » 
00:00 - 19:0019:00 - 00:00

7:00 PM
it's under %appdata%\rubberduck
 
fresh install of Rubberduck v2.2.0.3242-pre ... No function suggest
I clear settings now
 
<~ puzzled
turn on trace-level logging, reparse; do the logs show the inspection running?
 
Without the config file it is stuck on Initializing...
Does it rebuild the config ?
 
it should, yes
did you quit & restart though?
RD would have loaded & cached the settings at startup
 
yeah, this is on the first ALT+F11 since I renamed the config
It's up but there is not a new config file
 
7:05 PM
that's because we don't make one if everything is default :)
still stuck?
 
k
2018-05-16 12:05:07.4601;TRACE-2.2.6710.18711;Rubberduck.Inspections.Abstract.InspectionBas‌​e;Intercepted invocation of 'ProcedureCanBeWrittenAsFunctionInspection.DoGetInspectionResults' returned 0 objects.;
 
ok so it did run
and wtf
 
yeah... this is just me? Other people see this still?
 
installs 3242
Rubberduck Code Inspections - 05/16/2018 15:08:54
9 issues found.
Hint: Member 'test' is implicitly public - (Book3) VBAProject.ThisWorkbook, line 3
Hint: Member 'DoSomething' is implicitly public - (Book3) VBAProject.ThisWorkbook, line 9
Suggestion: Procedure 'DoSomething' can be written as a function. - (Book3) VBAProject.ThisWorkbook, line 9
Suggestion: Le projet porte le nom assigné par défaut - (Book3) VBAProject., line 1
Suggestion: Parameter 'bar' can be passed by value - (Book3) VBAProject.ThisWorkbook, line 9
 
I just made another test with a string... It's not just objects. I'm not getting that suggestion on anything
  <CodeInspection Name="ProcedureCanBeWrittenAsFunctionInspection" Severity="Suggestion" InspectionType="LanguageOpportunities" />
what else would ignore that?
 
7:11 PM
FWIW I'm getting these results with your MCVE:
Rubberduck Code Inspections - 05/16/2018 15:10:59
7 issues found.
Suggestion: Procedure 'DoSomething' can be written as a function. - (Book3) VBAProject.ThisWorkbook, line 11
Suggestion: Le projet porte le nom assigné par défaut - (Book3) VBAProject., line 1
Suggestion: Parameter 'bar' can be passed by value - (Book3) VBAProject.ThisWorkbook, line 11
Suggestion: Consider renaming la classe 'Sheet1' - (Book3) VBAProject.Sheet1, line 1
Suggestion: Consider renaming la classe 'Sheet2' - (Book3) VBAProject.Sheet2, line 1
wtf is going on...
 
ok, so it's just me.... but what did I do?
 
Version 2.2.6708.13023
OS: Microsoft Windows NT 6.1.7601 Service Pack 1, x64
Host Product: Microsoft Office 2010 x86
Host Version: 14.0.7208.5000
Host Executable: EXCEL.EXE
 
Version 2.2.6710.18711
OS: Microsoft Windows NT 6.1.7601 Service Pack 1, x64
Host Product: Microsoft Office 2013 x86
Host Version: 15.0.4997.1000
Host Executable: EXCEL.EXE
 
huh, the about box isn't showing the same version as the splash form / releases page
 
Rubberduck v2.2.0.3242-pre
 
7:15 PM
7 mins ago, by Mathieu Guindon
installs 3242
 
So why are our versions different?
 
excellent question
 
Maybe I have something fucky registered
I ran "Repair VBE Addin registration"
 
I hate when that happens. I've no idea what's going on.
 
Version 2.2.6710.18711
OS: Microsoft Windows NT 6.1.7601 Service Pack 1, x64
Host Product: Microsoft Office 2013 x86
Host Version: 15.0.4997.1000
Host Executable: EXCEL.EXE
same version...
 
7:18 PM
@HackSlash if RD is already loading, it wouldn't make a difference.
 
I want to unload and then reload from the fresh install
Ok, uninstall. No duck.
installs 3242
Quack Quack
 
notice splash says 3242
and about says something else
that's annoying
I'll take and insta-merge a PR that fixes this :)
 
Version 2.2.6710.18711
OS: Microsoft Windows NT 6.1.7601 Service Pack 1, x64
Host Product: Microsoft Office 2013 x86
Host Version: 15.0.4997.1000
Host Executable: EXCEL.EXE
My splash matches this version number
 
something is broken
@this any ideas?
 
and it's higher than your number? Is my build number valid for something else?
 
7:24 PM
I'll have to take a look at this at home
did you install 3242-pre on the same machine you got your clone on?
if so, there's a slight chance the VBE might actually be loading the debug build. is there a "serialize" button on the RD toolbar?
(that button only shows up in a debug build)
 
7:48 PM
[rubberduck-vba/Rubberduck] WaynePhillipsEA pushed commit 0cc3e19a to next: fix Run overload to handle ambigous named VBA projects
Merge pull request #4010 from WaynePhillipsEA/fix-ambiguousprojects-unittests2

Fixes handling of ambiguous VBA project names when invoking test methods
 
@HackSlash just to be 100% sure have you ever had a previous debug build installed? that was HKLM-registered. The current is HKCU-registered.
HKLM would trump HKCU
 
[rubberduck-vba/Rubberduck] mansellan pushed commit f634171c to next: VB6 Project ID now saves as a GUID to VBP file
Merge pull request #4007 from mansellan/3990

Saves ProjectID to custom property in the .vbp file (VB6)
 
@HackSlash a simple way to destroy all the traces of previous HKLM-installed debug previous would to be perform a unregistration with the regasm - the tlb file doesn't have to be the same one from the old build; it'll still work since regasm.exe works with HKLM exclusively for both registering/unregistering.
e.g. <path to regasm>\regasm.exe /u /tlb: <path to tlb file>\Rubberduck.tlb /codebase
Note that not having a ducky after uninstalling doesn't mean the registry keys are not there because the VBE registration is HKCU, while the COM registration is whenever the installer or the Visual Studio build puts it.
no, i should pay more attention. @HackSlash's version is higher than @MathieuGuindon's...
 
I think @this is right. It could be a debug version
 
So you do see Serialize button?
 
8:00 PM
I did
I thought that installing a new version would get rid of my debug version
 
it wouldn't
the debug delievered via the Visual Studio build process and the installed version are best thought of as 2 separate beasts
and they can co-exist but only one can operate.... just like Zaphod's heads.
 
Fantabulous. So other devs have run in to this before, I must assume
 
that's why I told to unregister the old debug before upgrading but I can't remember if that's applicable in your circumstances
the unregister is supposed to be only one-time thing
because of move from HKLM to HKCU
 
@HackSlash I think we run into something similar when trying to get an installed and a dev version side-by-side
 
if you were to subsequently download and install a version using per-machine, that would still trump the debug build because HKLM > HKCU
 
installing it per-user would only temporarily trump the VS-built version but it'll get destroyed next time you build via VS.
well, not "destroyed" -- the registration would just be updated to point to the VS's build path instead of the install path.
so still like Zaphod's heads, I guess.
thinks he's stretching it with the references
 
[rubberduck-vba/Rubberduck] build for commit 77e178ad on next: 53.67% (target 0%)
 
@this Working through WHERE NOT EXISTS ( SELECT NULL FROM foo WHERE bar = 'baz'). Lead me to read stackoverflow.com/questions/173041/not-in-vs-not-exists.
I got lost about halfway in the first answer but from what I understood of stackoverflow.com/questions/4875745/usage-of-select-null the "subquery" in the (...) will allow EXISTS to indicate whether it found a valid value.
 
yes. treat it as a boolean function
btw, this uses SELECT * which only confuses the issue, IMO.
here's an example to make this more starkly clear.....
execute this query:
 
Hold up
 
8:10 PM
SELECT 1 / 0 WHERE 1 = 1;
what happens?
 
I'm trying to word what's in my mind.
WHERE NOT EXISTS (...) in laymans terms says "If it's not found add it."
 
add doesn't click - i would say include this current row being evaluated in the output.
the current row being the one from the FROM table prior to the WHERE, mind you.
 
You lost me.
 
ok, let's say you have FROM foo
 
INSERT INTO foo (bar) is putting whatever the results happen to be into the table foo at column bar as a new record. The results come from SELECT 'baz' AS bar WHERE NOT EXISTS ( SELECT NULL FROM foo WHERE bar = 'baz');
 
8:15 PM
and that foo table (or view or whatever don't care)
has 1000 rows
conceptually for each row in the foo table, we must evaluate the EXISTS(...)
if it returns true, include it
otherwise, don't
 
That's done by the WHERE NOT EXISTS
the True/False idea.
 
right - the point is that WHERE has to check that for each row that we have in the foo source qualifies, and EXISTS only provides a boolean result
depending on the subquery contained within the EXISTS()
so if the subquery has any rows, we know we need to include this particular row from the source foo into the final output
 
The source foo would be from foo which is contained in the subquery SELECT NULL FROM foo WHERE bar = 'baz'?
 
we aren't paying any attention to the contents of the subquery; we are only interested in seeing whether there's any contents or not.
no, one level up, from the FROM
 
8:19 PM
INSERT INTO foo (bar) is the foo you're referring to?
 
e.g. SELECT .... FROM foo WHERE NOT EXISTS ( SELECT NULL FROM bar WHERE baz = 'hi');
set aside the INSERT part for now
 
ok.
 
[rubberduck-vba/Rubberduck] build for commit 85d75346 on next: 53.68% (target 0%)
 
focus on the SELECT part. INSERT literally doesn't care what SELECT stuff does; it only eats what output the SELECT provides
 
alright
 
8:21 PM
SELECT statement can be filtered using WHERE, right? EXISTS and IN both use subqueries but in a different way.
go back to my earlier example --- try this in SSMS
SELECT 1 / 0 WHERE 1 = 1;
what happens when you run this query?
 
kneejerk reaction says it barfs since 1/0 I'm assuming is an error.
 
now try this.... SELECT 1 WHERE EXISTS (SELECT 1/0 WHERE 1 = 1);
 
Divide by zero error encountered.
A single 1 in returned.
 
now try: SELECT 1 WHERE EXISTS ( SELECT 1 /0 WHERE 1 = 0);
@MathieuGuindon Yeah been there, my shirt's frayed out already. :(
 
8:24 PM
Nothing is returned.
Give me a sec to try and #Wordify what I'm understanding.
 
now try this.... SELECT 1 WHERE 1 IN ( SELECT 1/0 WHERE 1=1);
 
Subquery WHERE, inside EXISTS(...) is expecting something that resolves to TRUE/FALSE. The SELECT then is evaluated for 1=1 since that is True. It get's the SELECT 1/0, which is an error and is something, which has EXISTS evaluate to True. Ultimately it SELECTs 1 to return as the singular result.
 
no, the SELECT part inside the EXISTS(...) is totally ignored
that's why we don't get division by zero error when the statement is in an EXISTS subquery
 
But why is it there if it's ignored?
Is it because syntax mandates that something be there?
 
because it's required by the committee.
yeah
which is why I always write it as SELECT NULL FROM....
to emphasize that it has zero importance
 
8:30 PM
:click: OK. That makes more sense.
 
SELECT * and SELECT 1 are technically equivalent but gives the wrong sense esp. when comparing to IN which will barf if you gave it 1/0 in the SELECT
 
I know that IN is something with SQL now. I'll look at researching it later.
 
@this So the RegAsm commands have not cleared up the issue for me. My registry is littered with RubberDuck entries and I really wish uninstall would clean everything that install put in... I have artifacts from every version I have ever installed...
This is a greater problem with Windows, as all applications seem to do this
 
the installer i made a month or so ago should clean after itself
wasn't the case w/ the versions prior to that
and definitely not for debug from vs builds
 
@this I think the Lego's all started snapping together.
 
8:33 PM
the script that gets run on vs build from the Deployment project will clean up the previous build version
but it can only know of the immediate, not all past versions....
 
if there was less junk it would be easier to find the needle in this haystack so thank you for your efforts
 
i know that's a big reason why i wrote the deployment to help manage all this crap in registry
 
Monking, all!
 
but if you did install versions prior to the one w/ new installer, and since regasm didn't help, it might be best to delete all keys
 
Been in Excel Hell, and have an interesting situation...
 
8:37 PM
Peter put up a solution that may be of help
 
eh?
 
according to MS, Excel has a DATEDIF() function
 
Yet, when I type =DATE into a cell, it doesn't show up in IntelliSense:
 
that would make it easier for you to find all the keys
 
8:38 PM
 
@FreeMan a matter of Excel version, perhaps?
 
and when I boldly forge ahead and type it in anyway, I get #NAME
I'm on Office 2016 which the linked page references
 
O365?
 
nope, desktop
that article says it's all versions from O365 back through O2007
including O2016
 
huh yeah it does.
I have to assume that MSFT knows about you and put in DisableIfUserIsFreeMan switch then.
 
8:40 PM
I can only imagine...
I was just going to ask if someone had an O2016 version handy to see if I got the crippled copy.
oops, sorry, the error is #NUM!, not #NAME...
 
xl2013 doesn't have it listed.
 
grr... OK, I've got a date fubar'd somewhere. :(
=DATEDIF("1/1/2016","1/1/2017","M") gives me 12
Odd though, that it doesn't appear as an option.
Thanks for the rubber ducking. Back to the salt mines...
 
@Duga, incoming...
 
> Closes #3994.

Found that VBEProjectExtensions is unreferenced (possibly by removal of SC), dropped.
 
TYVM @this for again helping me connect the wires.
Just tested it and was able to get expected results.
:+1:
 
8:53 PM
AH! DateDif() only works if the earlier month is the first month. I had 'em backwards.
sigh...
 
[rubberduck-vba/Rubberduck] build for commit c75ae906 on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4015?src=pr&el=h1) Report
> Merging [#4015](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4015?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/85d75346282060886013aad30c4a93b5b304b8f5?src=pr&el=desc) will **increase** coverage by `0.13%`.
> The diff coverage is `0%`.


```diff
@@ Coverage Diff @@
## next #4015 +/- ##
===========================
[rubberduck-vba/Rubberduck] build for commit c75ae906 on unknown branch: 53.81% (target 0%)
 
9:17 PM
[rubberduck-vba/Rubberduck] build for commit 1f3c3641 on unknown branch: AppVeyor build succeeded
 
At long last, I manually cleaned my registry. Now I have the correct build number showing.
Version 2.2.6708.13023
OS: Microsoft Windows NT 6.1.7601 Service Pack 1, x64
Host Product: Microsoft Office 2013 x86
Host Version: 15.0.4997.1000
Host Executable: EXCEL.EXE
 
:+1:
 
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4015?src=pr&el=h1) Report
> Merging [#4015](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4015?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/85d75346282060886013aad30c4a93b5b304b8f5?src=pr&el=desc) will **increase** coverage by `0.12%`.
> The diff coverage is `0%`.


```diff
@@ Coverage Diff @@
## next #4015 +/- ##
===========================
[rubberduck-vba/Rubberduck] build for commit 1f3c3641 on unknown branch: 53.81% (target 0%)
 
I load the test case and I still don't see "Procedure 'x' can be written as a function"
 
Have you parsed?
 
9:26 PM
The circle arrows?
yeah
 
It says Ready?
 
yup
 
You don't have any @Ignore annotations perhaps?
 
I don't think I ever have. I'm using a test workbook
just the test code pasted in from the example
 
Which example?
 
9:28 PM
#2719
Sub test()
Dim foo As Object
Set foo = New Collection
DoSomething foo
End Sub

Sub DoSomething(ByRef bar As Object)
  bar.baz = "x"
End Sub
2018-05-16 14:30:07.6861;TRACE-2.2.6708.13023;Rubberduck.Inspections.Abstract.InspectionBas‌​e;Intercepted invocation of 'ProcedureCanBeWrittenAsFunctionInspection.DoGetInspectionResults' returned 0 objects.;
 
Neither do I.
 
Aha! Is not just me?
I can't get any ProcedureCanBeWrittenAsFunction to pop on my code
I've tried a few example of what "should"
 
> I double checked this and I'm not getting any issue either.

Tried with code below that I know used to give results.
```
Public Sub test()
Dim bar As String
bar = "old value"
RewriteAsFunction bar

Debug.Print bar
End Sub

Public Sub RewriteAsFunction(ByRef value As String)
value = "new value"
End Sub
```

`Procedure can be written as a function` is set to `Suggestion` and there is no annotation to ignore this inspection.
 
@Duga Possible regression bug?
 
9:42 PM
Works for me (in a standard module)
 
@IvenBach then why does it work for @mansellan and me?
 
Not sure.
I'm not getting a result either when I know I should.
 
tried in Sheet1 too, works there
 
I believe you.
 
9:48 PM
@HackSlash are the other inspections showing?
@IvenBach lol posted it for my q ^^
 
Fresh pull from Next along with Clean, Rebuild.
I'm at a loss...
 
so, false negatives now.. great!
TTGH
 
10:12 PM
> MCVE:

1. Open Excel VBE
2. Using PE, rename VBAProject to 'Test'
3. In CE, *without selecting any node*, Click Add Module from the toolbar
4. Module will be created in folder 'VBAProject', not 'Test'

![image](https://user-images.githubusercontent.com/25420409/40146667-53e5d054-595e-11e8-8183-23ba1bbb037c.png)

Absent a selected node, the default folder should be based on the name of the active project. Spotted because it's more apparent in VB6, which has a different (and varying) de
 
Excited to announce that we’ve broken our previous record of 1 download.
 
I have no inspections here using Iven's MCVE
 
I wonder if it's possible that the inspection results is non-deterministic? That would explain why some gets results while others don't. It shouldn't be, however.
wth why is there even a like button on outlook web?!?
Newsflash for Microsoft: Ya ain't Facebook. Don't be like them, mmmk?
 
@this #TrynaBeDownWithTheKids
 
#Reject
 
@Duga first issue I've raised in ages that isn't #vb6-specific :-)
 
10:58 PM
@this "send a smile/frown" is for user feedback. Or is it something else?
 
Nope
 
Since I don't know how inspections work can someone tell me if this code is redundant?

var ignored = new HashSet<Declaration>( State.DeclarationFinder.FindAllInterfaceMembers()
.Concat(State.DeclarationFinder.FindAllInterfaceImplementingMembers())
.Concat(builtinHandlers)
.Concat(userDeclarations.Where(item => item.IsWithEvents)));

return Listener.Contexts.Where(context => context.Context.Parent is VBAParser.SubStmtContext)
.Select(context => contextLookup[(VBAParser.SubStmtContext)context.Context.Parent])
What I see is that the conditions in "var ignored" are repeated below in the "Listener.Contexts.Where"
...
 
11:16 PM
hmm but I see this line !ignored.Contains(decl)
 
11:48 PM
@WaynePhillipsEA just to help clear what I think is confusion on my part - normally an source interface must implement dispatch (though it may be dual) -- is there any reasons why a source interface should not be a dual interface and implement dispatch only?
 
#TIL 1-1-30 is the day excel switches from 1929 to 2030 when YYYY isn't specified.
Another reason to use YYYY always.
 
@IvenBach never ever use ambiguous date formats. ISO dates only and forever.
 
I know. I wanted to see when it would occur. #CuriosityNotKillingThisDuck
 
you'd be surprised at how many people fat finger their way into 3rd or 11th centrury....
 
The year 210? I'm sure that's what they meant.
 
11:52 PM
yeah
"we have this order placed on March 17th, 218. Now sir, would you be so kind to explain to me why it took you 1800 years to fulfill this unfilled order?"
 
@this Meh, that's about average for some carriers...
 
lol
 
Better late than never?
"You're accepted to <PrestigiousUniversity>." :grumble: 25 years too late.
Home Time. Get to digestify what I learned today.
 
00:00 - 19:0019:00 - 00:00

« first day (1440 days earlier)      last day (1740 days later) »