« first day (1953 days earlier)      last day (1227 days later) » 

12:01 AM
[rubberduck-vba/Rubberduck] 1 opened issue. 21 issue comments.
[Zomis/FactorioMods] 1 opened issue.
[Minesweeper] Games Played: 44, Bombs Used: 28, Moves Performed: 5941, New Users: 5
 
@IvenBach FWIW regarding the diff merge conflicts of RubberduckUI.resx - I suspect the content of both the HEAD and upstream/next are to be retained in the resx file in order to resolve that conflicts of that file. The upstream/next content is from the recent merge of #5189.
 
1:01 AM
So I just watched this interview from 2017 youtube.com/watch?v=sKUYfiWSFLY.
and loved the idea of subclassing the code pane!
 
You think merging the commits prior to #5189 followed by subsequent merges might shed some light on the issue?
@Mrblackey You have found our Benevolent Dictator Mug's interview. Well done. Thus the indoctrination education continues.
 
@Mrblackey FWIW, a part of the code dealing w/ subclassing is here: github.com/rubberduck-vba/Rubberduck/tree/next/…
We still need to realize the bigger dream of custom code panes, though. ;-)
@IvenBach Not sure I follow what you mean there
 
Merge everything up to just before 5189 into my dev branch. Test with a build to see if I get the meta data errors. If not merge 5189 into my branch and build again.
Outside of that #TyphoidIven is at a loss on how to proceed/debug the issue.
We're never going to get another contributor that encounters as many problems as I do.
 
1:16 AM
let's try this.
create a new branch from upstream/next
verify it builds
then merge your current dev into the clone of upstream/next
then build again
 
@this Well, I've never actually did any subclassing of my own, but shouldn't it be relatively straight forward? Once we get a hold on these messages to the code pane, we need to translate them into calls to Avalon's API before forwarding, no?
 
Actually we should do as little subclassing as possible
VBIDE is.... finicky.
and with Avalon, we don't really have to subclass anyway
the main thing is to put the WPF ElementHost control on the "WinForm" toolwindow
Look at DockableWindowHost for how it is done.
as you can see, the class knows very little -- it's mainly plumbing. All the WPF contents are actually in the elementhost control
 
I see.
Then why would we even want to subclass the code pane in the first place?
Wouldn't Avalon's approach be more beneficial?
 
1:32 AM
The main reasons to subclass is to capture some events that VBIDE won't tell us about
for example, VBIDE doesn't notify us that a window was made active, or that a selection was changed.
You can look in SubclassManager and SubclassingWindow's derived classes (from the WindowApi for examples of events that we generate.
Now, the pipe dream is that we would replace everything about VBIDE and use our own windows, right?
 
lol, sure.
 
However, there are some technical roadblocks. The main thing is that we don't know how the VBIDE handles debug stuff.
So, fi you're in break mode, you press F8, yellow line moves next line, etc. All that is not easily accessible
(and I think those aren't a part of message pump but I'm not the guy who tried to hijack the debugger)
So for now, to allow people to use the edit & continue and have same debugging experience, we'll have to use the original codepane
so even if we have our shiny new code pane, it wouldn't be used in the break mode and that means we still need to listen to various events that VBIDE API won't tell us about.
With me so far?
 
So we need to capture all information arriving to the code pane from the debugger.
 
not from the debugger, from the user
e.g. their clicking or changing selection
we simply have no way to get info from the debugger
 
OK, I think I'm starting to get what you're saying.
 
1:39 AM
Created new branch from `upstream/next`: Built without issue.
Merged `origin/Issue5109_Consolidate_copy_command_logic` into that branch. Resolved conflicts. Build failed.
@this ^ There was no error message.
 
@IvenBach there's always an error message
 
More properly stated no errors shown in the error list.
 
look in output
yeah I know. VS is gasllighting you.
 
14>Done building project "Rubberduck.Core_euklfd3d_wpftmp.csproj" -- FAILED.
14>Done building project "Rubberduck.Core.csproj" -- FAILED.
 
search for ": error"
that'll get you to the actual error
 
1:41 AM
Not with VS gaslighting me it doesn't.
1>------ Build started: Project: Rubberduck.Resources, Configuration: Debug Any CPU ------
2>------ Build started: Project: Rubberduck.JunkDrawer, Configuration: Debug Any CPU ------
1>C:\Users\IvenBach\Source\Repos\Rubberduck\RubberduckBaseProject.csproj : warning MSB4011: "C:\Users\IvenBach\.nuget\packages\sunburst.net.sdk.wpf\1.0.47\Sdk\Sdk.props" cannot be imported again. It was already imported at "C:\Users\IvenBach\Source\Repos\Rubberduck\Rubberduck.Resources\Rubberduck.Resources.csproj". This is most likely a build authoring error. This subsequent import will be ignored.
Line 1755 or thereabouts.
 
14>UI\UnitTesting\TestExplorerViewModel.cs(379,96,379,130): error CS0234: The type or namespace name 'AnnotationType' does not exist in the namespace 'Rubberduck.Parsing.Annotations' (are you missing an assembly reference?)
14>Navigation\CodeExplorer\CodeExplorerMemberViewModel.cs(54,55,54,87): warning CS0184: The given expression is never of the provided ('ObsoleteAnnotation') type
14>UI\Command\ComCommands\NoIndentAnnotationCommand.cs(37,56,37,79): warning CS0184: The given expression is never of the provided ('NoIndentAnnotation') type
 
yep, there's yer errors.
Now fix them
btw ---
open the file
change error list from Build + Intellisense to either Build Only or Intellisense Only
sometime it'll then show you the errors it won't tell you about
Why? Because Microsoft hired a practical joker to work on error list, I guess?
 
The output window 'Show output from: Build'?
 
1:46 AM
no
 
> This is an old issue and no followups. Assuming stale and closing. If this still is an issue, feel free to reopen.
 
WTF is your problem Error List. Now you show the errors... :sigh:
 
because there's a bug in VS w/ Build + Intellisense
4 mins ago, by this
Why? Because Microsoft hired a practical joker to work on error list, I guess?
hopefully you are now able to move forward. I need to step away for a bit
 
I think so. Thanks for breadcrumbing me.
 
2:46 AM
Got a clean build! TYVM for your help.
 
[rubberduck-vba/Rubberduck] build for commit c990acbc on unknown branch: AppVeyor was unable to build non-mergeable pull request
BUILD FAILURE!
 
@Duga You lie. It built on my machine and tests passed.
 
3:14 AM
@Mrblackey The moment Mug gets triggered in that video is him bringing up hungarian notation. "Hey C# has GoTo also!"
 
@IvenBach looks like you still have 2 conflicts
 
I know for a fact I merged.
Don't know how I'm getting conflicts still. Working through them.
 
did you fetch from upstream/next before pulling?
 
Yep.
 
ok, then I'd pull it then review the conflicts before I commit the merge
 
@Duga mumble mumble #TyphoidIven mumble polluting commit history...
 
[rubberduck-vba/Rubberduck] build for commit 4bffe3b6 on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
@IvenBach Mugs twitch at 36:35 gets me every time. "But it's WRONG!"
 
Yep. :)
 
3:27 AM
I'm on 2015/1/1 now. Bedtime.
Hi (and bye), @BZngr.
 
night!
 
Night!
 
:)
 
:hopes-real-hard: C'mon please let that have gotten everything.
 
3:35 AM
@IvenBach :hides: dang I cannot stand hearing myself talk and I look like an idiot
 
That's why I tried not to make any sound while doing my uni/juggle videos.
I feel the same way too. Entirely self conscious for no good reason.
 
@MathieuGuindon I never felt comfortable watching myself talking, either.
 
I suppose nobody does. has any actor ever mentioned they liked seeing themselves on screen?
 
Good question. I don't know.
If they did, they have to be the most megalomaniac, no?
 
3:40 AM
^ I'd venture to say the Pineapple of the US does.
 
LO AND BEHOLD FOR I AM GOD'S GIFT TO THE HUMANITY
hmmm. I wouldn't be surprised at all if The Toupee loves the sound of his own voice.
 
@Duga AV is still chugging along. I haz a good feeling about this one.
 
[rubberduck-vba/Rubberduck] build for commit 11c9fc03 on unknown branch: AppVeyor build succeeded
 
w00t!
 
Yay.
 
3:55 AM
[rubberduck-vba/Rubberduck] build for commit b0c6a513 on unknown branch: AppVeyor build succeeded
 
Thanks again for the breadcrumbs.
 
yw!
 
I need to learn the rest of what I so rarely do via CLI in git.
I'm done for tonight. Need to get studying for university.</iven>
 
@IvenBach 'night!
 
4:23 AM
[rubberduck-vba/Rubberduck] build for commit 123377cf on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] retailcoder pushed commit bd672a09 to next: adding back analyzer from borked branch
[rubberduck-vba/Rubberduck] retailcoder pushed commit 03c62ea7 to next: re-added the tests
[rubberduck-vba/Rubberduck] retailcoder pushed commit efd42e42 to next: tag -> element
[rubberduck-vba/Rubberduck] retailcoder pushed commit fe13deb3 to next: missed a couple...
[rubberduck-vba/Rubberduck] retailcoder pushed commit 63773f23 to next: refactored, added more tests
[rubberduck-vba/Rubberduck] retailcoder pushed commit 2bc2707f to next: added more tests, all green, good to go
[rubberduck-vba/Rubberduck] retailcoder pushed commit 123377cf to next: fixed analyzer errors
Merge pull request #5204 from retailcoder/next

inspection xml-doc analyzer
> Closes #4050

Also unignore some of unit tests by providing a COM object.
[rubberduck-vba/Rubberduck] build for commit 1972b757 on next: AppVeyor build succeeded
> This brings the number of build warnings down from over 1600 to under 300.
 
4:41 AM
@Duga Nice. It's not fun seeing 1000+ warnings. I wonder whether there are any legit warning that are not ignored....
Also, why not just edit RubberduckBase.csproj?
 
now they won't be buried in a sea of warnings anymore :)
@this 418 I'M A TEAPOT
 
Oh, yeah for the other warnings. I meant legit 1591 warnings
 
eh, too bad
 
yeah. I don't know how else we'd handle that.
 
> Given the following:

```
Public Enum FruitType
[_First] = 1
Apple = 1
Orange = 2
Plum = 3
[_Last] = 3
End Enum

Sub DoSomething()
MsgBox CStr(FruitType.[_First])
End Sub
```
The References collection for Enum Member [_First] is empty. It does not recognize `MsgBox CStr(FruitType.[_First])` as a reference. Is this a known bug?
[rubberduck-vba/Rubberduck] build for commit 67e205e5 on unknown branch: AppVeyor build succeeded
 
5:00 AM
ttgtb
 
[rubberduck-vba/Rubberduck] build for commit 2824b409 on unknown branch: AppVeyor build succeeded
 
 
4 hours later…
9:25 AM
@M.Doerner If this is still relevant, you could iterate over all the registered type libraries (github.com/zspitz/ts-activex-gen/blob/master/tlibuilder/… but I imagine RD has code like this too) and find types with a parameterless defaullt member which also return a type with a parameterless default member.
I wanted to do it myself, but I won't have any time for the next week and a half.
 
9:57 AM
@IvenBach Saw it. It was chilling.
Made me wanna open my old VBA projects in order to SEEK & DESTROY all those vicious notations.
 
10:25 AM
hey @Vogel612, how's things?
 
@mansellan a bit stressful, especially working out what lectures I will / want to attend for my masters
 
Are you all done with your degree now?
undergrad I mean
 
nah, just need to finish my bachelor's thesis, though.
 
ah ok, nearly there then.... and then straight into a masters. I can see why you'd be stressed!
 
11:08 AM
> Quick question: have you tested renaming a module that contains a qualified reference to a member in the same module? I think introducing the suspension the way you did might change the outcome of the race condition still present in the code.

Probably, the VBE still lets us finish rewriting before it triggers the renamed event. If you really wanted to do the refactoring under parser suspension, you would have to include the actual rewrite in the suspension action, which suppressing the rewr
 
11:31 AM
> The added content seems to be largely duplicated over all projects. Can't we put it into the base project file?
> @MDoerner I think I tried that initially, but IIRC it didn't seem to properly work.
 
@ZevSpitz Thanks for the tip. It does not really matter. I would have used it for the examples in the inspection's XML doc. It would have needed to be something encountered regularly by VBA devs.
 
 
1 hour later…
12:52 PM
0
Q: Getting Windows User Info From The Active Directory

rickmanalexanderI took some boilerplate code that I have been using for determining an active windows user's info to either send emails with their details, or to pass to a error logging class, and encapsulated it in its own class. What I would like to know about my implementation of this is: Are there more eff...

 
1:24 PM
[rubberduck-vba/Rubberduck] build for commit 16aeffab on unknown branch: AppVeyor build succeeded
 
I'm going to step back from SE for a while. Not because I disagree with their changes (at least, as I think they intend their changes to be, even if their wording is a little vague), but because I don't want to be involved in digital bar brawls. You can contact me at my discord server here: discord.gg/6H5eJbr. I might not be there as much as I was here, but I'll try to check it regularly.
 
> @MDoerner Thanks for spotting this. I've reorganized the RenameRefactoring of Projects and Modules so that the rewrite is included in the suspension action. This PR updates both `ExtractInterface` and `Rename` - the PR's `ExtractInterface` changes were already performing the rewrite in the suspension action.

I find myself wondering if there is any downside (and possibly an advantage) to suspending the parser during the execution of all refactorings. If so, then the suspension could pos
> @MDoerner Thanks for spotting this. I've reorganized the RenameRefactoring of Projects and Modules so that the rewrite is included in the suspension action. This PR updates both `ExtractInterface` and `Rename` - the PR's `ExtractInterface` changes were already performing the rewrite in the suspension action.

I find myself wondering if there is any downside (and possibly an advantage) to suspending the parser during the execution of all refactorings. If so, then the suspension could pos
 
1:39 PM
@Duga I think that was one of our todo item, to use suspensions in all of refactorings and possibly other places.
 
Do we have refactorings that rewrite the exported code?
Actually, we have to test that the suspension does not break the recovery of attributes.
Thinking about how this is set up, I think it will work out, but I would preer to have a test for this.
 
can such test be written?
We'd have to use the mock parser and I don't know if that is acceptable representation in this situation
 
This will be rather complicated.
 
We would have to write a special variant of the rewriter that actually removes all member attributes in affected modules and inject that instead of the usul one.
 
TBH, I am doubtful it can be written as an unit test. It would be more like a integration test.
 
It is.
 
I think we also need to do actual I/O to replicate the actual environment where they are written out as files and then read in
 
But most of our tests are scenario tests and not unit tests.
That is not the problem here.
The problem with the mock parser is solely that it does not have the VBE's behaviour to lose all attributes if you copy in code.
The main problem the recovery could run into is that it tries to execute an attributes rewrite while under suspension, which would blow up, because it includes a suspension itself.
 
1:59 PM
Based on how I remember the setup, this should not be possible, though.
 
> This should have been closed with the green release but I think this got missed, so closing.
 
@M.Doerner Wouldn't this concern apply equally to the suspension code currently in the PR?
I messed up the link...I'm referring to "The main problem the recovery could run into is that it tries to execute an attributes rewrite while under suspension, which would blow up, because it includes a suspension itself."
 
It does, but I think I set it up in a way that avoids this issue.
 
 
2 hours later…
3:55 PM
@IvenBach I was looking at your copy command PR and wondered if you meant to address Max's and Mat's PR comments?
 
I probably do. Was trying to get it up to date before working on it.
 
Oh Ok. Was wondering if those went missing. Thanks for clarificatoin.
 
4:29 PM
For github.com/rubberduck-vba/Rubberduck/pull/… regarding the IEnumerable<T> to IEnumerable<IExportable> does that also apply to AppendInfo<T>?
Making the code change gives red squigglies. Time to learn why.
 
Public Enum RecipientTypes
    [To]
    CC
    BCC
End Enum
blargh
 
Is append info an interface defined as AppendInfo<out T>?
If not, the conversion is not automatic because it is not a covariant generic interface.
 
It is not only AppendInfo<T>.
 
foo<T> can be thought as basically foo<inout T>, which is incompatible with foo<out T>
 
Covariant and Contravariant returned to hazy concepts from not working on them.
 
4:42 PM
TBH I still don't remember what's co and what's contra off the cuff and have to be reminded which's which.
 
Brain tickle tells me co is when it narrows or becomes more derived. Contra becomes less defined.
 
@Ian welcome to the pond.
 
[rubberduck-vba/Rubberduck] build for commit 1f17d611 on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
5:05 PM
Build locally first...
 
[rubberduck-vba/Rubberduck] build for commit da851301 on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
^ W000...... carp...
 
5:29 PM
Sometimes you feel like the dumbest duck in the pond. And you prove it by taking far too long to catch a blatantly easy fix. :hangs-head:
 
@IvenBach until someone decides to keep alive that mistake via meme/etc., you will live it down quickly
 
Yeah. I'm in good company either way.

We're all idiots

Aug 22 at 19:34, 15 minutes total – 24 messages, 6 users, 0 stars

Bookmarked Aug 22 at 19:52 by Mathieu Guindon

 
^well played
 
5:53 PM
[rubberduck-vba/Rubberduck] build for commit 3fe99b58 on unknown branch: AppVeyor build succeeded
 
I want to tackle Issue#2777 Code Inspections: Grouping By Location - State what source is. I'm struggling to pick apart where the grouping headers are assigned.
 
@IvenBach harsh... but true
 
 
1 hour later…
7:13 PM
Failing my way towards success.
 
@IvenBach Best way to do it!
 
7:35 PM
> Can we show declared functions, like Windows API calls, in code explorer?
> We do already?
![image](https://user-images.githubusercontent.com/2367644/66679919-00104980-ec35-11e9-8f3d-12c12cead285.png)

May be that you need to parse it to see it?
> You're right! Seems I was too hasty.
 
@Duga just confirming - does anyone see drawing artifact when resizing CE?
Usually doesn't happen but just now happened but I think it's just my VM being a turd.
 
@this Keep mine docked, so, no.
 
WTF. I just noticed on my Access it's resizing just fine
But on Excel, even after starting it afresh, it's borked
Also, it was docked
this is what you get with WTF, this
 
8:47 PM
@MathieuGuindon Sorry to poke you. I've made progress but don't know which member to use in order to get the location of the inspection result.
 
It should have a Selection member, no?
 
That it does.
That just gives L##C##-L##C##. Is there a way to get the parent where that selection is declared?
 
not from the selection - a selection is just a struct that represents (multi-character) position in the code pane
 
I'm trying members that look promising but haven't found what I want yet.
 
the Target (IIRC) would be it
if it's a Declaration result, then the target is a Declaration
if it's an IdentifierReference result, then the target is an IdentifierReference
so from the target you can get the parent scope in several ways, easiest being the ParentScopeDeclaration
 
8:57 PM
What exactly do you need the location for?
 
As part of the grouping header Of inspection results. I would like it to identify if it’s a module, worksheet, etc.
 
The Target is always a Declaration.
The result should have a qualified module name.
That has the component type.
 
@IvenBach Worksheet vs Workbook is going to be trickier though
 
Why? They're both document modules?
 
exactly. telling them apart is trickier than just accounting for the module type
 
9:08 PM
Not sure I follow. it's for navigation, right?
 
9 mins ago, by IvenBach
As part of the grouping header Of inspection results. I would like it to identify if it’s a module, worksheet, etc.
 
was confused - thought he wanted it for navigating from the TW
That should be identifiable, though.
 
in other news, wife bought 3 pumpkins this week. me: "it's too early to cut them though" kids: "but, they're for practice!"
 
that's a good reasoning there.
 
9:41 PM
Oct 5 at 5:06, by IvenBach
Reminder to Mug to not carve your pumpkins until, at most, the day before Halloween. Looking forward to your pumpkin art btw.
Not even a week has gone by and already you're itching to carve.
reference.ParentScoping.DeclarationType looks very promising!
 
10:16 PM
@IvenBach That will usually not tell you anything about the containing module.
Btw, from where do you get a reference? I thought you are looking at inspection results.
 
That one didn't but it did lead me to the correct one.
 
That looks right.
 
Now to figure out Document for WS vs WB.
 
What did you use to identify it?
 
QualifiedModuleName.ComponentType.ToString()
 
10:20 PM
Not sure if we write the interfaces to the declaration when resolving the document types.
 
Good
You got it from the qualified selection on the result, right?
 
That is something that the resolver need to do (emitting metadata from typelib API)
 
We currently do not know whether it is a ws or wb or report since we have not implemented it so far.
 
public QualifiedSelection(QualifiedModuleName qualifiedName, Selection selection)
{
    QualifiedName = qualifiedName;
    Selection = selection;
    _componentType = qualifiedName.ComponentType;
}

public QualifiedModuleName QualifiedName { get; }

//TODO: Convert to resource string
private ComponentType _componentType { get; }
public string QualifiedNameWithLocation => $"{QualifiedName} - {_componentType}";
 
Max, I'm wondering if we need a mechanism to map a declaration into a Com*** object to avoid the need to access typelib API outside the parsing.
 
10:24 PM
:derp: No need to create a field.
WRT default member access should a result come up for a with block? With destination.Columns(1) is coming up and that doesn't feel right.
 
not sure what destination.Column(1) is
 
Private Sub WriteTableData(ByVal inputCell As Range, ByVal data As Variant, ByVal columnSpan As Long, ByVal DELIMITER As String)
    Dim destination As Range
    Set destination = inputCell.Resize(data.Count, columnSpan)
    With destination.Columns(1)
        .Value2 = Excel.WorksheetFunction.Transpose(data.ToArray)
        .TextToColumns DataType:=xlDelimited, Other:=True, OtherChar:=DELIMITER
    End With
End Sub
 
if the method Column returns an object and its class contains a default member, then it'd come up as an inspection result.
Ok, so it's a Range
and Columns on the Range object returns a .... Range object.
 
And columns is a range as well.
 
and of course, Range has a default member.
So boom, you got inspected.
 
10:33 PM
But that's going to occur for every With RangeObject use.
 
destination.Column(1).Value
 
Which implicitly is suggesting Dim firstColumn As Range and using firstColumn.FooBar for all member calls.
 
10:48 PM
re-reading this code, With seems more like a Set
e.g. you're operating on the Range that's returned by the Columns() function.
I think that is actually a bug and should be reported.
 
The question here is how Range.Columns is defined.
If it has an optional parameter, this is a bug.
 
AIUI, it returns a Range object, too.
 
If not, the result is warranted.
The question is whether it has an optional parameter or not, not what it returns.
 
not clear from the docs alone.
there is this note, though.
> Using the Columns property without an object qualifier is equivalent to using ActiveSheet.Columns. For more information, see the Worksheet.Columns property.
 
The doc of that is as unclear.
 
10:53 PM
> Property Columns As Range
read-only
that's what OB says.
 
Seems to not have any parameter.
 
yet, Columns(1) means something
I don't get it. It wouldn't work with Range.[_Default] as it would
unless [_Default] is doing much more than we know
 
Have you tried whether it works with the default member in between?
I cannot as I am away from a computer until Sunday evening.
The range default member already does vastly different things depending on whether you provide both optional parameters or none.
Why shouldn't it do yet something different if only one parameter is passed?
 
becuase the _Default has RowIndex, ColumnIndex as the parameters
not sure if that's what you mean with default member in between:
Public Sub x()
    Dim r As Excel.Range

    Set r = Sheet1.Range("A:D")

    Debug.Print TypeName(r.Columns(1).Value)
    Debug.Print TypeName(r.Columns.Value)
End Sub
both returns Variant()
 
Moreover, nothing prevents it from doing different things based on internal data of the range instance.
 
11:02 PM
?r.Columns(1).Address
$A:$A
?r.[_Default](1).Address
$A$1
 
I mean rng.Columns.[_Default](1).
 
?r.[_Default](1, 1).Address
$A$1
?r.Columns(1, 1).Address
the latter yields 1004 RTE
? typename(r.Columns.[_Default](1))
Range
? r.Columns.[_Default](1).Address
$A:$A
I guess that confirms the [_Default] will behave differently depending on which member we access in prior path
 
There you are.
 
Frankly that's stupid
it's making a mockery of the OB, too.
 
It does different things depending on internal information of the instance.
 
11:06 PM
yes but if I look at the OB, it does not match with the documentation, and of course it wouldn't show the correct QuickInfo
so if I do r.Columns(, the quickinfo shows _Default(RowIndex, ColumnIndex)
 
And the inspection result is valid, although not helpful.
 
please explain to me how that is a good user experience when the docs and the actual behavior all does not match up
 
I honestly don't know what Excel team was thinking.
 
> Close #2777.
 
11:08 PM
Anyway, TTGTB.
 
Night!
 
Night. Thanks for the help.
 
TFW you stick Resharper on code that hasn't been looked at since .net 2.0, and it finds improvements to improvements to improvements it's suggesting.
I'm on track to golf this down from 10,000 lines to about 500...
 
Was there a lot of copying done?
 
11:19 PM
a bit, but it's more that as .net matured, it go more and more concise
 
Can leveraging generics and other features reduce it by 1/20?
 
[rubberduck-vba/Rubberduck] build for commit cf7a8cb5 on unknown branch: AppVeyor build succeeded
 
that's the thing, it's not just generics, it's method groups, ternaries, redundancies, short-circuits. Not everything I'm finding is neceserily new features, more that sticking modern R# on old code that was probably never linted by anything...
oh, plus initialisers, inference
would probably get even smaller if I could target core 3, but it has an irreplacable dependency on a net fx library...
But as an example, on one line... "you can use var here". OK. "you don't need an explicit array definition either". OK. "Oh, also, you can use an array initialiser". "OK. Are we done?
Uh yeah. For now.
And this is why we need Avalon. Lightbulbs and squigglies are so much more immediate than a toolwindow...
 
Most chemists thought the lanthanides and actinides could be inserted in the sixth and seventh rows, but no, they're just floating down at the bottom with lots more undiscovered elements all around them.
3
 
11:40 PM
Interestingly, the warnings I'm left with after the initial pass relate to nulls. I'll get those later, but it's timely that c# 8 brings in non-nullable reference types. If it solves the last thing that R# finds tough, then c# is nearing perfection...
 

« first day (1953 days earlier)      last day (1227 days later) »