« first day (1907 days earlier)      last day (1273 days later) » 
00:00 - 18:0018:00 - 00:00

6:05 PM
@IvenBach how many different types are you handling?
and how many of those don't have the same interface?
you could maybe use polymorphism instead
 
@IvenBach the only thing T:class guarantees, is that T is a reference type.
 
Hey @M.Doerner I noticed that VariableDescription is handled like a Member annotation for the purposes of the AttributeAnnotationProvider
 
The 3 types are Declaration IInspectionResult and TestMethodViewModel.
 
is that specifically because there's "module attributes" and "non-module attributes"?
or asked differently: could the attributes parse pass scope attributes down to variables?
 
@IvenBach can't these types implement a common interface that says "I can be formatted into a clipboard-friently format"?
 
6:09 PM
28 mins ago, by this
I also have a question -- who is responsible for formatting? The type itself or the formatter?
 
That said, I'm iffy about tacking on a cross-cutting concern on the type. I can see it as more of an extension method rather being intrinsic to the type.
 
Sorry, kinda half-here
 
I don't understand the question.
 
@this agreed
 
6:10 PM
No worries, there were lot of people talking, too.
 
Working with code you don't fully understand is really tough.
 
@IvenBach I might be misreading but the way I understood your code is that you are writing all those code for formatting different types in one big class/method.
and that means you have to do lot more than you should have to
which is why you're trying to find what type it is, etc. etc.
 
Yes. The logic to append all the information was in 3 places.
 
in that context, you actually don't care about the types themselves
 
It looked like it would be common functionality and I though to consolidate it to a single location.
 
6:12 PM
you only need a formatted string out of it somehow
Sure, but each type describes themselves differently and require different format.
See what I mean about knowing too much?
 
Not entirely.
Even though the code may be very similar in multiple places that doesn't merit creation of a method to consolidate it.
It looks like I got caught up on not wanting to see the same code in multiple places.
 
also consider how it should change, too.
for example, if one type adds some new arguments, you need to update the string formatting for that type
 
I thought that was solved with the generic parameter.
 
Should the formatter be changed for that? No. Only the string format needs to be changed while the formatter keeps does its job of assembling the output.
BRB
 
That means I should be able to drop several of these commits.
I took the path not needed and learned some things along the way.
 
6:21 PM
@this IMO a formatter that knows how to format any type, knows too many things. So either you need an InspectionResultFormatter : IClipboardFormatter + DeclarationFormatter : IClipboardFormatter + TestMethodFormatter : IClipboardFormatter and then take an IClipboardFormatter, or you make everyone implement IClipboardFormatter
I think having a set of dedicated classes that know how to format one specific thing, is the better approach here
 
Legacy code book arrived. More reading materials.
 
@MathieuGuindon I agree
 
be it only because Declaration has more than enough on its plate as it is :)
 
6:41 PM
This brings yet another question --- where do they go?
Aside the class they format would be one place but seems kind of cluttering.
That's the real problem about formatting - it's a cross-cutting concern, which is why it could get messy.
 
Dammit. - I grabbed my veggie juice bottle and shook it ("shake before use, right?) ....it was opened.
YES THE DANG KEYBOARD GOT MOST OF IT
off to get a coffee to cleanse the veggie juice off my laptop
@this RD.Core.ClipboardFormatting?
or ClipboardFormatters
 
the problem is that it has to know about the type, which affects the build order... :\
 
I mean, it's just another RD.Core feature
Oh shoot
 
RD.Core is in middle, I think.
 
Wait no core already knows about all these types, no?
 
6:50 PM
not if it's in refactoring, codeanalysis, or that stuff, I think? I think those go after
gosh, need to look at teh build order again
 
Is there any need for me to preserve my misguided work?
 
IInspectionResult is in RD.Parsing IIRC, so non-issue here; test methods are already in Core
 
I've rebased locally and am about to git push -f to my repo.
 
why rebase and push -f?
 
I dropped the commits dealing with the clipboard writer consolidation attempt.
The tip of my local branch is behind remote now.
 
6:58 PM
has anyone observed the VBIDE misbehaving more often WRT windows' z-order in Windows 10 recently?
e.g. not coming to the foreground when you ask for it, forcing you to go to the taskbar to bring it to the foreground, not responding to shift+alt
 
@MathieuGuindon good. That said, it would be less of a problem had we implemented the stairway pattern, putting the interfaces in their own assemblies. Then we don't have to go "oh shoot" whenever we need to deal with a cross cutting concern.
Because we can't really use RD.JunkDrawer because of that, though I would definitely have had it go into a RD.Formatter assembly
 
> The current state contains a first redesign for annotation processing. That redesign still has quite some rough edges and I'll be changing it significantly to deal with the discrepancy in handling static and non-static information in annotations.

For that I'm going to split the current `IAnnotation` into an `IAnnotation` for dealing with the static information and a `ParseTreeAnnotation` combining an `IAnnotation` and the non-static information.
[rubberduck-vba/Rubberduck] build for commit bdd8c6de on unknown branch: AppVeyor was unable to build non-mergeable pull request
BUILD FAILURE!
 
agh.
 
Great, keyboard is fried again
 
7:13 PM
@Duga FML Somehow I've crossed the streams again.
 
[rubberduck-vba/Rubberduck] build for commit b595e2ac on unknown branch: AppVeyor build succeeded
 
7:28 PM
If I do a rebase on a sequence of that has commits before a merge, a merge, and commits after a merge does it thereafter essentially consider the merge as not existing?
I think that's what I unwittingly did.
 
@MathieuGuindon slather some refried beans on it. It might help.
 
@Duga Files changed now looks like what I was expecting.
Cherry-pick was very helpful accomplishing that.
 
[rubberduck-vba/Rubberduck] build for commit 4fc5287c on unknown branch: AppVeyor build succeeded
 
Should be ready for an actual PR review.
 
8:26 PM
@IvenBach if you rebase onto something after the commit that you merged in, then the merge becomes unnecessary and is automatically dropped
 
Did not know that when I did a rebase.
 
well, consider what a rebase does
if you move the commits to after the commit you merged, what's left to merge?
 
@IvenBach mind uploading a screenshot?
 
 
> Also you will never see your files again
lol
 
8:31 PM
A---E---F---K <-- upstream
 \       \
  B-C-D-G-H-I-J <-- branch
BEFORE
-----------------
AFTER
A-E-F-K <-- upstream
       \
        B'-C'-D'-G'-I'-J' <-- branch
 
that's origin or really upstream/blessed?
 
upstream in our case would be next
 
Image uploaded.
 
thanks :)
 
8:33 PM
note how the merge-commit H is not in the branch after rebasing
 
hence rebasing being destructive
 
because I'm slow, i assume the Issue Description textbox is the new thing, right?
 
@this yup. "Add description filter for Code Inspections"
;-)
 
I should be thanking you Mug for your patience for facing my horrendous PR's and dirty rebasings.
 
well, my uncertainty is because the label says Issue Description, doesn't match the title.
#TooPedanticForMyOwnGood
 
8:37 PM
hm, should "issue description" just say "filter"? or "filter by description"?
 
I would go w/ Filter by description
 
even with the "filter" icon just left of it?
 
honestly I'm a bit confused because there's the filter and there's the magnifying glass on right
 
that's because a SearchBox control was used
something's off with the button though
 
Why is this giving me a syntax error on the .SetTimeouts() line?
Public Sub RESTtest()

  Dim restRequest As WinHttp.WinHttpRequest
  Set restRequest = New WinHttp.WinHttpRequest

  With restRequest
    .Open "POST", URL & REQUEST_GET_CUSTOMERS, True
    .SetRequestHeader "Authorization", "Basic " & Base64Encode(SITE_ID & ":" & API_KEY)
    .Option(WinHttpRequestOption_EnableRedirects) = False
    .SetTimeouts(0, 0, 0, 60000)
    .Send "{""response_type"":""JSON""&""location"":""582""}"
'    .Send "{""response_type"":""JSON""}"
    .WaitForResponse
    Debug.Print ".ResponseText: " & .ResponseText
 
8:40 PM
I'm also unclear if the filter button applies there - it looks like it'd applies to the buttons to left of it
 
MSDN says that it takes 4 Long, as does Intellisense
 
i think in the end, it should be on the right, after all the buttons & the textbox
then that would be "Toggle Filter"
 
I'd assume it's live-filtering as you type
 
^ it is.
 
If it's live filtering, then you either don't have a filter button at all or use it as a toggle
 
8:41 PM
Was following the look of Test Explorer.
 
it's the filter + magnifying that bothers me.
you're overwhelming me with choices.
 
I don't like that the button gets clipped
 
The bottom portion?
 
derp
 
@MathieuGuindon I think Comintern reported about that - it is affected by windows theme. :\
 
8:44 PM
That's also the case for CodeExplorer too.
 
@this then we need implicit styles :)
<Style DataType="{x:Type Button}">
^ +ControlTemplate, and should look consistent regardless of theme
 
good that the thing is a component
 
@MathieuGuindon that's another thing I never really fully made up my mind. if we make our own theme, then we start look funny when Windows 11 comes out
OTOH, if we follow windows theme, we have to deal with silliness like icon clipping.
 
@this "funny" as in, consistent across all Windows versions?
:)
 
No, when the new windows theme contrast with our theme that looks fine in previous.
that has happened. :(
 
@this coughs in XP
 
actually, no. In Vista, then again in 7, then again in 8
8/8.1 and 10 are more or less similar so that's not oto bad but there's no promise Windows 11 won't be flat metro
 
I thought 10 was the last Windows?
 
I don't care what they'll call it
 
8:53 PM
2020, 11, vNext, Wall, wahtever
you get the idea
 
"Pineapple Update"
 
Stat! We need a pineapple theme NOW!
 
Anyone know if all these quotes are the proper way of setting all the various keys in a REST API request:
WinHttp.WinHttpRequest.Send "{""response_type"":""json""&""location"":""104""}"
 
@IvenBach you ok with adding the DPs?
 
I think you need some spaces for your ampersand.
 
8:55 PM
DP?
Dependency Properties?
 
yeah. it's not really hard, I can show you how tonight if you're stuck.
 
also, why not use VBA-JSON?
 
@this that ends up sending {"response_type":"json"&"location":"104"}
I just don't know if they all need to be quote delimited.
@this more hints welcome...
 
if it's all json, then yeah
 
@MathieuGuindon What will the dependency properties be going on? My M/W evenings are occupied with classes.
 
8:57 PM
@IvenBach the SearchBox code-behind
 
I just had to read your comments.
 
so that this becomes legal:
<controls:SearchBox WatermarkText="{resx:...}" ShowButton="False" ... />
 
@this VBA-JSON?
 
@FreeMan there's an alternative?
 
I was out eating with friends. So, I am again late for the rest of the party.
 
8:58 PM
@FreeMan I'm not sure that is a valid json? is & legal there?
 
@IvenBach The generic was unnecessary because you used OfType<IExportable> on the enumerable at the only place it was used. After the cast, the gernaric type is completely irrelevent.
 
haven't a clue-bat... I'm just duplicating (ish) what I see in the URL that Postman puts together.
Basically, this is me hacking in the dar...
so dark I can't even finish typing it
 
Error: Parse error on line 1:
...esponse_type":"json"&"location":"104"}
-----------------------^
Expecting 'EOF', '}', ':', ',', ']', got 'undefined'
soo, no.
 
OK, projects at home beckon. TTQW. Success today, though, I've actually succeeded in making the call, now I'm getting 500 Internal Server Error.
Maybe it's due to the &
 
BTW, the actual formatting was in the individual classes all along because they all implement IExportable, which provides the ToClipboardString function.
 
9:01 PM
ducked json validator, got it directly in the search result in duckduckgo
 
ah, so it's just a matter of extracting the IExportable implementation to separate types then
assuming we want to do that
 
AFAIU, the point of the AppendInfo method was to collect the individual formatted items and combine them for export.
 
@this I had that project starred from a while back. I had forgotten about it. Will take a look at it tomorrow.
TTQW for reals...
 
@FreeMan you need to replace that & with a ,
 
I guess, the type constraint on AppendInfo<T> should have been T: IExportable, and maybe T: class.
 
9:06 PM
^
 
Hm, that would have been useless.
 
IExportable should be enough
wait what?
yeah just pass an IExportable
 
Since IEnumerable<T> is covariant, IEnumerable<IExportable> would do the job.
 
exactly
 
intermediate state: third (or fourth) "clean" compilation into a number of errors....
 
but at least all annotations are now created with a parameterless constructor...
 
@Vogel612 Ragardin your earlier question, VariableDescriptionAnnotation is both a member annotation and an attribute annotation, like DescriptionAnnotation.
 
huh? why was it not marked as a MemberAnnotation in the AnnotationTypes then?? ... hmm... maybe I'm missing something..
 
There are also module annotations that simultaniously are attribute annotations, e.g. ModuleDescriptionAnnotation.
Ah, I remember.
It is not a member annotation, but a variable annotation.
 
VariableDescription = 1 << 13 | Attribute | VariableAnnotation,
 
9:12 PM
The distinction is that it can apply to module level variables and not to module body elements.
 
so far so good, the problem is more with the name MemberAttributeAnnotation for the method on AttributeAnnotationProvider
 
This is important when collecting the annotations.
 
it kinda implies that the annotations searched are all scoped to Member
 
The conversion works the same as for members.
 
but that's actually not the case.
 
9:13 PM
Just the objects it can attach to are different.
 
so... NonModuleAttributeAnnotation might be a better name for the method?
 
It works like for DiscriptionAnnotation.
That is a more precise name, indeed.
 
okay, I'll just rename that later, then
 
wait which one?
not sure I like NonModuleAttributeAnnotation, whatever it's for. it's negative wording...
is it a "non-module attribute" annotation, or a "non-module" attribute annotation?
 
9:17 PM
Do you have a better name for attribute annotations for non module attibutes?
 
it's searching all attribute annotations that can be scoped to anything that's not a module
 
@MathieuGuindon FWIW, the former doesn't make sense grammatically? The latter is only possible reading, at least in my mind.
 
so that matches attribute annotations attched to a Member, Identifier or Variable
 
Actually, identifiers cannot have attributes.
@IvenBach It is a shame you nuked everything. Most of it could have been salvaged easily.
 
well, we have Description -> ModuleDescription; we could have Attribute -> ModuleAttribute? "non-module" would be the ones without the word "module" in it?
 
9:21 PM
@MathieuGuindon you're misunderstanding...
 
that wouldn't be the first time :)
TTQW though
 
we're talking about the Attributes parse pass where the annotation must be inferred from the exported attribute definition
 
@M.Doerner I still have it on my home computer. That's partly why I was willing to do so.
 
and there's basically two kinds of attribute definitions: those on the module and those everywhere else
 
Keeping them locally on my work machine while trying to fix the crossed commits would have made it too difficult for me.
 
9:22 PM
@Vogel612 Actually, it is not in the attributes pass that this is required.
 
with everywhere else being limited to members and (IIUC) module-scoped variables
 
It should only happen when rewriting in a quickfix.
 
how do we determine that the attribute value and the annotation value are out of sync, though?
 
Tha attributes pass should only attach the attributes to the declarations and collect the contextx that can have an attribute.
 
@M.Doerner Now that I have a better idea of what is going on with generics I'll also learn more if I rebuild it again.
 
9:24 PM
[rubberduck-vba/Rubberduck] build for commit 4f94a051 on unknown branch: AppVeyor build succeeded
 
The inspection looks at the annotations and gets their Attribute.
 
Then it looks whether that attibute is attached to the same declaration.
 
ahh, okay
 
Only for the quickfixes that add the attribute annotation or adjusts it, the reverse conversion is needed.
 
9:27 PM
> Version 2.4.1.4704
OS: Microsoft Windows NT 10.0.17763.0, x64
Host Product: Microsoft Office x86
Host Version: 16.0.11901.20218
Host Executable: EXCEL.EXE


**Description**
A module in an add-in has the name "Foo". Adding a new module to a different project and attempting to rename gets a dialog warning that a module with that name already exists and proceeding may cause the sky to fall.

**To Reproduce**
Steps to reproduce the behavior:
1. With 2 projects have a standard module in
 
Hm, thinking about it, I guess the inspection for missing attribute annotation might use the reverse conversion as well.
 
However, it might als instead get all attributes from the annotations and then simply look for the attributes not covered already.
 
@Duga huh how did we miss that case!?
 
@Duga That might actually break code.
If you do not qualify your references, youo can change a lot of stuff by naming things the same way as a class in a referenced library.
 
9:30 PM
yay for shadowing ???
 
exactly
 
Is the other project referenced though?
 
> Does ProjectA reference project B? i.e. is identifier shadowing taking place in this scenario?
[rubberduck-vba/Rubberduck] build for commit ecb92996 on unknown branch: AppVeyor build succeeded
 
If there's no project refs, then the identifier name should resolve within the scope of the project it's defined in, qualified or not...
 
10:12 PM
oh wow I think I found out why sometimes the build fails, but no errors are shown in the VS error window...
it's because of the multistage build for WPF again.
apparently that confuses the VS error window
okay now to fix tests again..
uhh... wait no that doesn't work :/
 
hey maybe try sdk extras?
unlike sunburst, it has been maintained and updated
 
hmm ...
let's actually leave that for later.
because for now I gotta fix the annotations related to attributes not working
Broke them by assuming that attributes are static
which isn't strictly true...
~sigh
 
agreed. thought it was blocking you atm
 
nah, it just explains why I need to look into the Output sometimes to find the next compilation issue
seaching for ": error" works pretty well, though
 
yeah. annoying though
 
10:25 PM
true, not a blocker, though.
 
10:38 PM
Hi, I'm back.
More technically, Hosch250 is back.
 
When's your name change take affect?
 
Probably as soon as the server cache expires.
 
~kicks the server cache
3
 
11:06 PM
That did the trick.
@Hosch250 welcome back.
 
@Hosch250 btw if you want your old GUID back, just ask a mod.
 
Oh, thanks.
Why?
I mean, I could just wait 30 days again...
Did you find it that funny?
 
you can't look at your old names, can you?
 
I can search 23f
 
~hangs head in shame
 
11:12 PM
One comment in this room:
Aug 22 at 12:53, by FreeMan
@23fc9a62-56de-47fb-97b4-737890 be sure to make plenty of SO comments as 23f before you change, though, that way there are lots of random @23fc9a62-56de-47fb-97b4-737890 something, something... comments scattered about the site, but nobody named that anywhere!
And a few in other rooms.
 
~sigh ... over 300 failing tests and I'm not even through half of them...
 
:( Good luck.
I'm out to bathe. Hopefully it helps my eyes heal, so they stop weeping and bleeding (allergies got me...).
 
@Vogel612 english is funny. we hang criminals and they die, but we can hang our heads and not die (at least not literally)
 
@Hosch250 oh right autumn allergies are coming.
 
@Vogel612 I did figure that part out. I was getting another error as I ran out of the office. I'll have to take a look at it again in the am.
 
11:16 PM
@Vogel612 on account of them not using arrange methods and newing it in each test?
 
10 mins ago, by IvenBach
@Hosch250 welcome back.
^ from me, too!
 
@this on account of ... probably a variety of things...
imma let the test run finish and see what I'm going to get to today.
 
just wondering as i imagine the tech debt on the test project is likely large
 
yea, there is some debt around there, but it's comparatively minimal, actually
the bigger issue was with the Declarations... splitting the annotation type required adjustments to every damn declaration
I assume the tests are a little bit broken around that as well
and I actually need to fix up the mock parser setup now that I changed how annotations work...
 
Why did all the declarations need an update?
I thought you just wanted to rename IAnnotation to IParseTreeAnnotation and then extract the new IAnnotation.
That should not require any manual adjustments.
 
11:28 PM
I was being a dum-dum and did it differently
didn't rename, but created a separate class
but everwhere annotations are accessed from a declaration, I needed to adjust how it's retrieved.
 
Why?
 
because the Declaration is associated to the ParseTreeAnnotation and the accesses rely on the IAnnotation
 
Doesn't IParseTreeAnnotation extend IAnnotation?
 
no, and it shouldn't, IMO
 
Why?
 
11:31 PM
because IAnnotation is statics and it simplifies the injection setup
 
It is an annotation that also knows about a context.
 
no, it's not
the annotation is just the static information.
a ParseTreeAnnotation is basically an annotation instance
 
I did not think you wanted to make the annotation part literally static.
 
it's not actually static
 
What I had in mind was that the annotation part still deals with the values, only without knowing about a context.
 
11:34 PM
ohhh no.
 
Anyway, HTTGTB.
 
while IAttributeAnnotations know how to deal with attribute values, the IAnnotations don't touch their arguments
I'm not 100% convinced that's good, though...
it might even be useful to consider allowing an IAnnotation to determine whether it's ParseTreeAnnotation is valid
crap, I broke annotation binding T.T
 
public static readonly DependencyProperty TextProperty =
    DependencyProperty.Register(nameof(Text), typeof(string), typeof(SearchBox), new UIPropertyMetadata(default(string), PropertyChangedCallback));
public static readonly DependencyProperty HintProperty =
    DependencyProperty.Register(nameof(Hint), typeof(string), typeof(SearchBox), new UIPropertyMetadata(default(string), PropertyChangedCallback));
public static readonly DependencyProperty WatermarkTextProperty =
    DependencyProperty.Register(nameof(WatermarkText), typeof(BitmapImage), typeof(SearchBox), new UIPropertyMetadata(def
@MathieuGuindon ^ That along the lines of what you were thinking for the DependencyProperties?
Followed the template of the two that were already there.
Heading to uni.</iven>
 
11:51 PM
@IvenBach remind me why Hint doesn't already fulfil the usecase you're trying to deal with using WatermarkText?
and why is WatermarkText a BitmapImage?
 
00:00 - 18:0018:00 - 00:00

« first day (1907 days earlier)      last day (1273 days later) »