« first day (1009 days earlier)      last day (2171 days later) » 
00:00 - 06:0006:00 - 00:00

12:01 AM
Yup, that matches what I've learned so far.
 
RELOAD!
 
Ok
 
[Hosch250/Rubberduck] 10 commits. 11730 additions. 14103 deletions.
 
@Comintern and I get highlighted 1/2 letters! :(
I'll fake it
 
The part I think you're learning is this.
 
12:01 AM
[Hosch250/VSDiagnostics] 6 commits. 462 additions. 312 deletions.
[retailcoder/Rubberduck] 1 commit. 269 additions. 201 deletions.
 
And the only thing I could add to that from my crude understanding is that it is another mechanism of helping to protect state but I don't understand what it adds that a class doesn't, exactly.
 
[rubberduck-vba/Rubberduck] 38 commits. 2 opened issues. 1 closed issue. 5 issue comments. 59947 additions. 78620 deletions.
[VSDiagnostics/VSDiagnostics] 5 issue comments.
 
@FreeMan Huh. It must just render differently in Evince.
 
If you have SomeClass that Implements the IClassName then the SomeClass gets to decide what it does with it.
You can then have AnotherClass that Implements the IClassName in the same exact module and they won't conflict with one another since they will be separate objects. Each having their own respective use for the 3 holes that you plug stuff into.
 
Oh oh!
Cool, thanks, I get it
So they don't interfere with each other
Good stuff
That was a good learn for the end of the day! Now I have to run, I have to pick someone up :)
Thanks again!
 
12:05 AM
You inherently understand this, it just takes high level thinking to understand.
I'll explain a bit more, read it when you get back.
 
@Comintern I'm reading it in Chrome. whatevs, it'll work
 
@Comintern @Mat'sMug @ThunderFrame and the rest will correct any mistakes I feed you.
 
Hey - I'm getting a highly repeatable exception in the RubberduckParserState right after I attempt to open the IDE.
 
@FreeMan I should put mine on my tablet. Easier than dragging a monitor over to the couch...
 
depends on how long the cables are...
 
12:07 AM
@BZngr Is it a dictionary key not found?
 
the call is: return DeclarationFinder.FindSelectedDeclaration(activeCodePane) in function FindSelectedDeclaration(..)
 
What's the exception?
 
Null reference exception. I'd send a pic...but I've yet to see how to add one here.
 
When did you pull last? That should be fixed as of commit 676a62c4.
 
@BZngr - it the upload button over there -----> without typing anything into the text box here
 
12:11 AM
@Comintern I'm current.
@FreeMan All I seem to have is a "send" button.
 
Call stack probably be good too.
Hmmm... apparently I can't explicitly grant upload permissions.
 
The stack has only one call before the lines I indicated earlier. It is: OnVbeSelectionChanged
SelectionChangeService.cs line 45
 
@BZngr If you don't have that button, you've been shafted!
 
yeah...yours look different than mine. I'd send you a pic, but.....
 
lol
 
12:16 AM
Do you have AdBlock Plus or any other sort of web modifying tools running in your browser?
Maybe you've blocked too much...
 
maybe, I'll take a look
 
You can also just manually upload it to a free image host and paste the link.
A copy and paste of the call stack would probably be good enough though.
 
It would be the first time I've used such a thing. I'll see what I can do.
 
Debug->Windows->Call Stack.
The results are selectable. It would probably be in the RD log file too.
 
Reading the COM spec on pg 10, it seems that the problem with the "traditional" API is exactly the kind of approach that current OOP seems to support.
 
12:23 AM
[url=https://postimg.org/image/4fz9xz8l1/][img]https://s2.postimg.org/4fz9xz8l1/RDBootup_Exception.png[/img][/url]

[url=https://postimg.org/image/ucsyalc8l/][img]https://s2.postimg.org/ucsyalc8l/RDBootup_Exception_Call_Stack.png[/img][/url]


[url=https://postimage.org/app.php]windows 7 screen shot[/url]
 
@Comintern I usually go to ask a question and hit the picture button and ctrl+v to upload from clipboard. Then I paste the url here and discard the question.
@BZngr ^
 
Hah! That's awesome.
 
Do the above links work?
 
They complain, for example, that ODBC is a fixed interface and if you want a change you have to petition MS for the change. I get that this is true. But it gives you a nice way to switch data sources (from an Excel worksheet to an Access .accdb to SQL Server to Postgress) without really changing your code.
 
@BZngr 404
 
12:25 AM
they're indicating that the fact that the interface is fixed is a bad thing, though.
 
@Mat'sMug OK
 
What I've been seeing here seems like a lot of writing exactly those kind of classes to allow you to do exactly the same thing. i.e. plug in Moq (if I understand the very brief scan of their GitHub page) to pretend you're accessing the DB when you're really not, for Dev/Test purposes, then plug in the real DB access code to move to production.
Am I missing something major?
Or maybe I just haven't read enough of the spec yet...
 
@puzzlepiece87 This helped me with understanding classes stackoverflow.com/questions/19373081/…
 
@IvenBach did you read this answer?
8
A: How to use the Implements in Excel VBA

Aleksey F.There are two undocumented additions about VBA and "Implements" statement. VBA does not support undescore character '_' in a method name of an inherited interface of a derived class. F.e. it will not compile a code with method such as cShape.get_area (tested under Excel 2007): VBA will output t...

^^ this is why you don't use underscores in public member names
convention is PascalCase anyway
 
@Mat'sMug You are referring to "ask a question" on SE -right?
 
12:32 AM
Yup
From this room I typically just click one of the tags in the top right
 
@Mat'sMug I undestand #1 but not #2
 
I don't understand 2 either
But 1 is not documented anywhere AFAIK
 
:phew:
 
I mean, I found out about it not too long ago... in this chatroom
 
1 is logical since you have to have <BaseClass>_<MethodName> and you could have an instance where the name would be exactely the same as that.
It's a bit of a stretch but it 'could' happen
 
12:37 AM
@FreeMan The COM spec is talking about statically linking libraries.
 
so in terms of a large, well known, widely used interface like ODBC it's bad, but if you're developing and using one in your own code it's ok?
 
0
Q: RD startup exception

BZngrenter image description here com/EXPWq.png

 
@BZngr oh so close!
 
0
Q: RD startup exception

BZngrenter image description here com/EXPWq.png

 
@BZngr click the picture icon to upload an image, drag your image to the box, or select it, then hit OK. SE will upload the picture to imgur and embed a link in the question. Copy the link text from there, close the question without submitting it, then paste the link in this box here.
 
12:42 AM
ok...take two
 
@BZngr I'm amazed I'm still let in here with all the mistakes I make.
I'm starting to think they keep me around just to laugh at me.
 
I've been sending checks...
 
@IvenBach #2 refers to the method I used to set up the Sprite.cls in the code you read earlier. Since I forward the interface members to the concrete members, I can use either Dim foo As Sprite or Dim foo As IDrawable.
 
^^lol
 
@FreeMan It's lower level than that. Static linking hard-codes the function pointers from the linked vtable.
You're basically compiling the function pointer offsets directly into the executable.
 
12:46 AM
and there was much rejoicing....
 
@BZngr huzzah!
 
lol
 
 
@Comintern I've got a short somewhere in my brain that's just not connecting it together.
 
@Mat'sMug 2nd monitor wants you to clean up @BZngr's faux post
in The 2nd Monitor, 7 mins ago, by EBrown
@CaptainObvious @Mat'sMug ^^
@BZngr he's rockin' now!
 
12:50 AM
@BZngr WTF? Is the DeclarationFinder null?
 
you can just keep that one dummy post open & continue to upload images to the same one. Just don't forget to close it w/o submitting... :)
 
@Comintern yes
 
HTH does that happen?
 
Has this been replicated on anyone else's machine...or is it just mine?
 
That's a new one for me.
So in the locals window, it shows "null" for the value?
 
12:52 AM
@Comintern whereas dynamically linking means that method Open is looked up by name at runtime to find the offset, vs just jumping to 0x03af0214ea because that's where MS put Open in ODBC. right?
 
^^ Exactly.
 
@Comintern yes
 
o_O
 
ok. got it. I obviously didn't pick that up from the first 10 pages...
 
@BZngr ....I meant you copy the image url and paste it here and then discard the question....
 
12:54 AM
Yeah, it's from a bit more of an old school time. It kind of assumes the reader is coming from a C or C++ background.
 
I've discarded both now.
 
you know, I'm thinking C# is just a compressed version of C++
bit shifted by about 1/2 a character...
 
@BZngr don't do that too often, you might just block yourself from asking on CR!
 
Only on the surface. You can write managed C++ though.
 
1/2 a + up, 1/2 a + to the left. :)
 
12:57 AM
...and finish by rotating about 45 degrees across the 4D axis.
 
yeah...
oh, that shoulda been pixel shifted...
It's really not that funny if you have to explain it, is it?
 
@Mat'sMug Wow...and I've only asked two...ever.
 
Just post some stuff from your RD work for review. Build some CR rep.
 
@Comintern I noticed with codereview.stackexchange.com/questions/141404/… that it never actually 'touches' the last column or row. It's always 1 away.
By changing If .Left = 150 Then right = False 150 to 200 and `If .Top = 90 Then down = False' and 90 to 120 you'll blatantly see it when the square passes out of the bounds.
 
Yeah, there's in off-by 1 in the sample code.
 
1:05 AM
Where is it? I couldn't figure out where it's at
 
I didn't really give the example that much thought.
 
Does it deal with ReDim colors(9, 9) and option base 0 being the default?
 
No, the display area is 1 based indexing. The sample code assumes that it's 0 based when it calculates the bottom of the display. IIR it should also clip at the top - I'd have to take another look at it.
 
FWIW....Debug output content: 'EXCEL.EXE' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'EXCEL.EXE' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\Brian\Documents\GitHub\VisualStudioProjects\Rubberduck\RetailCoder.VBE\bin\Debug\Rubberduck.dll'. Symbols loaded.
'EXCEL.EXE' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\Brian\Documents\GitHub\VisualStudioProjects\Rubberduck\RetailCoder.VBE\bin\Debug\NL
 
1:12 AM
@BZngr I requested a change.
 
OK - thanks!
 
Looks fine to me other than that--not really familiar with this part of the code base.
 
@Comintern So if you have a class that has Public Function SomeProperty() As String and a class that implements it has Private Function IClassName_SomeProperty() As String but omits Public Function SomeProperty() As String will never be able to access the property?
 
@BZngr what @Comintern said - ideally edit that deleted post into a real question then
 
1:14 AM
@IvenBach Only if it's declared as the class, not the interface.
 
@Comintern Still not getting it. I can't seem to connect the wires together. Let my try some more at home to see if I can figure it out.
 
@Duga I don't even know what that's all about.
 
@IvenBach Example:
'IClass1.cls
Public Sub Foo()
End Sub

'Class1.cls
Implements IClass1

Public Sub IClass1_Foo()
    Debug.Print "Foo"
End Sub

'Module1
Public Sub Example()
    Dim bar As IClass1
    Set bar = New Class1
    bar.Foo			'<-- This is fine.
    Dim baz As Class1
    Set baz = New Class1
    baz.Foo         '<-- Compile error - method or data member not found.
End Sub
 
@Comintern fixed yesterday in my fork...
 
1:23 AM
Fix it like this:
'Class1.cls
Implements IClass1

Public Sub Foo()        '<-- Called from the class instance.
    Debug.Print "Foo"
End Sub

Public Sub IClass1_Foo()    '<-- Called from the interface.
    Me.Foo
End Sub
@Mat'sMug How was the DeclarationFinder ending up null?
 
IIRC I commented on the gh issue.. The finder is null until the initial parse sets it
 
@Comintern Shouldn't the Public Sub IClass1_Foo() be private?
 
So if you click on the code pane before the initial parse runs, boom
 
Did you get a call stack? It's probably another NRE somewhere.
 
It is a NRE
the finder is null until RefreshFinder runs
 
1:33 AM
I think it's the same type of issue.
new Task(() => DispatchSelectedDeclaration(new DeclarationChangedEventArgs(e.CodePane, _parser.State.FindSelectedDeclaration(e.CodePane)))).Start();
^Boom
1 character fix?
public Declaration FindSelectedDeclaration(ICodePane activeCodePane, bool procedureLevelOnly = false)
{
    return DeclarationFinder?.FindSelectedDeclaration(activeCodePane);
}
Now to figure out how to test that change...
 
@Comintern exactly
 
Only issue would be if any of the callers don't have a null check on the return value.
 
gah - being out a timezone makes catching up on chat a lengthy ordeal
 
@Comintern the caller is trying to update the contextual selection labels - it handles a null selection already ;-)
 
Yeah, I figured that out about 90% of the way through the call graph.
It's used by the CanExecute code mainly, which has assumed the null return case for a long time.
 
1:52 AM
@puzzlepiece87 @IvenBach I don't know if you're beyond this stage yet, but hopefully it's a useful metaphor. A Doctor class might expose properties like name and location, but it might also Implement interfaces like ISurgeon and IDefribulatorOperator. And a Dentist class might Implement ISurgeon, and a Paramedic class might Implement IDefribulatorOperator.
You can then have a method anywhere in your code that accepts an ISurgeon and you can pass it an instance of Doctor or an instance of Dentist, and you can have a method that accept an IDefribulatorOperator and pass it an instance of Doctor or an instance of Paramedic,
0
A: Immutable Object class in VBA – Creatable only through constructor and not via “New” keyword

ThunderFrameYour predeclared instance has the private fields and property gets to facilitate passing the variables to new instances. I've added a State property (replacing your IsMaking property) with a Friend scope (should the class end up in an add-in), and I've used VBA's ability to hide an emum member by...

 
lol
 
^ Am I hijacking the default instance too much?
 
Apparently my memory span is running a bit short tod... What were we talking about?
@IvenBach - It's useful in situations where you're forced to up-cast from an interface (which admittedly can be a sign of poor design).
 
@ThunderFrame IMO, yes, much
  errNotCreatable = vbObjectError + 100
  errOnlyCallableFromDefault = vbObjectError + 101
^ also, only the 1st enum needs an explicit value
the State stuff still has OP's biggest problem of context-switching between default instance and the instance being created, using state in "static context"
 
2:08 AM
Personally, I think the entire thing is a bit over-thought. I might have to throw my answer out there too, if for not other reason than to express my distaste for the Foo_ private member convention. Don't even make me think you have line continuations when you don't.
 
^
my answer hints at that by mentioning "funky prefixes or suffixes"
 
@Comintern up-cast?
 
left for the reader to realize a trailing underscore was funky
@IvenBach downcast - from Square to IShape; upcast - from IShape to Square (usually a terrible idea)
 
"Funky" as in don't make me do a triple take every time I see it.
 
@Mat'sMug downcast?
 
2:11 AM
cast - from TypeA to TypeB
 
can you do typecasting in VBA?
 
you do plenty of 'em all the time without even realizing
 
In languages with inheritance it's a down-cast is a cast from the derived to the base class. An up-cast (frowned upon) is from the base to the derived.
 
Dim foo As Worksheet
Set foo = ActiveWorkbook.Worksheets("Sheet1") ' <~ from Object to Worksheet
 
VBA's cast operator: =
To do an explict "cast", you have to jump through some hoops:
Dim x As TypeA
Set x = TypeA
Dim y As ITypeA
Set y = x
 
2:16 AM
@Comintern interestingly that happens quite all the time in any Office host
 
@Mat'sMug but isn't worksheets a class? since it's part of the hidden global class which itself is from the sheets class?
 
Worksheets is a type, yes - _Global is also a type, and has a property of type Worksheets named, conveniently, Worksheets
 
@Mat'sMug Happens all the time in COM. Pretty much all late binding is more or less up-casting IUnknown at runtime.
 
:sigh: So the object browser when I'm looking at the global class it's actually a type?
 
a class is a type
oh wait, you're thinking Type as in Private Type Foo
that's an unfortunate keyword... should have been Struct
a class is a reference type, and a struct is a value type
 
2:20 AM
@IvenBach You can even think of a Class as implementing an interface of itself (without the need for the "InterfaceName_" syntax). That is, when you declare Dim ws As Worksheet you're actually declaring ws as a Type/Interface and when you Set ws = Worksheets(1) you're casting a Worksheet to an interface of Worksheet.
 
@Mat'sMug This is part of the reason why I get confused and it takes me so long to learn.
 
If you think in those terms, you're always working with interfaces. And it's how VBA actually implements things behind the scenes. That is, for every class you write VBA actually creates a hidden interface behind the scenes.
 
...
 
a type is anything you can use in an "As" clause when you declare a variable, basically
 
Think of it in terms of TypeName(variable).
 
2:24 AM
the type of ActiveWorkbook is Workbook, a class; the type of Integer is Integer, a built-in value type; the type of this in many of my SO/CR Q&A's is whatever the Private Type I'm using is, and that's a custom value type.
 
This is why I know I don't really understand stuff. I can use it but I don't understand it.
 
the more you know stuff, the more you know that you know nothing
so don't worry about not knowing stuff, it's a sign that you're learning :)
 
@Mat'sMug Dim someLong as integer. The AS part identifies whatever word that follows as the type?
 
@IvenBach exactly
 
I know so much about COM that I'm completely clueless. Practically a vegetable.
 
2:28 AM
lol
 
'Dim someVariable as FakeClass` the variables type is FakeClass
 
bingo!
 
@IvenBach like any new subject getting an understanding of the core terms like Type, Member, Property, Declaration, Assignment, Method, Procedure and Function` is fundamental to understanding higher-level concepts such as classes, interfaces and composition.
@Mat'sMug IKR - Your answer is the right approach, but I wanted to implement something that didn't require an add-in, and didn't require the user to have an understanding of interfaces.
(I guess I should add that caveat)
 
@ThunderFrame I need to ask (non-native speaker) - is that pronounced "cave eat" or "cavee at"?
 
:35964348 As things are right now `Function`, `Sub`, `Declaration` I'm pretty sure I have understood.
`Property`, `Method`, `Type`, `Assignment` I'm becoming familiar/almost comfortable with
 
2:31 AM
@Mat'sMug well, it's Latin - I guess nobody knows
 
The second is closer.
 
@ThunderFrame do you say "guiff" or "jiff"?
 
Don't forget about "giff"
 
There is only GUIFF
 
@Hosch250 I put the u to make a hard g, giff is still ambiguous ;-)
 
2:33 AM
JIF is a cleaning product (although they renamed to CIF, IIRC)
 
OK, here we go vtable hack. :saves work:
 
@ThunderFrame good answer
 
...and hard crash.
 
@Comintern posting this again -vbforums.com/…
 
OK, why is the Remove Parameters never enabled?
I'm writing a WPF UI for it.
 
2:35 AM
@ThunderFrame Nah, trying to call a private method on non-owned instance.
 
Bear with my example if it seems like I'm beating a dead horse, I'm trying really really hard to understand.
 
I think I got the stack misaligned though.
 
'Module1
Sub TestOutiClassName()

    Dim someConcrete As SomeClass
    Set someConcrete = New SomeClass

    Dim anotherConcrete As AnotherClass
    Set anotherConcrete = New AnotherClass

    Debug.Print someConcrete.OnlySomeClassGets
    Debug.Print someConcrete.SomeProperty

    Debug.Print anotherConcrete.OnlyAnotherClassHasThis
    Debug.Print anotherConcrete.SomeProperty
    Debug.Print anotherConcrete.OnlyOneClassGetsToUseThis

    Dim someInterface As IClassName
    Set someInterface = New SomeClass
'AnotherClass.cls
Implements IClassName
Implements IExtraClass

Public Function OnlyAnotherClassHasThis() As String
    OnlyAnotherClassHasThis = "Exclusively available to 'AnotherClass'!"
End Function

Public Function SomeProperty() As String
    SomeProperty = "anotherConcrete string." '"This decides *how* to use the method 'IClassName.SomeProperty'"
End Function

Public Function OnlyOneClassGetsToUseThis() As String
    OnlyOneClassGetsToUseThis = "anotherIsolated: Concrete string!"
End Function
 
@Comintern Presumably the VBA compiler is compiling the class members in an arbitrary order - in theory you could calculate the address of the member and call it. But any edit to the class might change the function address?
 
'IClassName.cls
Public Function SomeProperty() As String
End Function
 
2:36 AM
@Hosch250 a preview box? nice! note that we now use AvalonEdit so you should have syntax highlighting in preview boxes
 
'IExtraClass.cls
Public Function OnlyOneClassGetsToUseThis() As String
End Function
 
No, although it is possible.
 
@ThunderFrame I wasn't thinking and made the function signatures different.
 
'SomeClass.cls
Implements IClassName

Public Function OnlySomeClassGets() As String
    OnlySomeClassGets = "Only for 'SomeClass'."
End Function

Public Function SomeProperty() As String
    SomeProperty = "someConcrete string."
End Function

'Inherited Stuff
Private Function IClassName_SomeProperty() As String
    IClassName_SomeProperty = "someInherited string."
End Function
 
Although, it could get a little tricky to support interfaces properly.
 
2:37 AM
Pretty sure I popped something off the stack that I didn't put there.
:resaves work:
 
@Comintern
> If you ever need to call a private COM interface function by its pointer/address, post #24 below shows how that can be done.
 
Hey, can someone send me a screenshot of the Remove Parameters?
 
Does my example make any sense?
 
I'm close, but I'd like something to reference now that I killed the old stuff entirely.
 
@Hosch250 The refactoring dialog?
 
2:38 AM
Yeah.
 
You WPFing it?
 
Yes.
OK, the WinForms designer in 2017 doesn't work.
Maybe I should commit my work and move to 2015.
 
never insall anything until it reaches 2.0.13 SP1
 
Seriously? Maybe MS is hinting something about wanting people on WPF.
 
2:40 AM
Yeah, it locks everything and I have to hard-kill it from the task manager.
 
@Hosch250 probably works, just has issues with our UserControl stuff
Huh
 
The funny thing is, I don't think they made any changes to it...
 
Anyway the redesigned refactoring dialogs should all have a preview box
 
Sure.
I'll get a replacement done, then work on the preview.
 
2:42 AM
We need to put AvalonEdit to good use before 3.0 :-)
 
Thanks.
 
^
It's in BindableTextEditor (it doesn't data bind by default).
 
Should it be resizable?
 
Sure why not
 
What's up with the huge-ass Java buttons?
2
 
2:44 AM
Nothing.
Mat did that.
 
That way one can fit their whole 500 character signature in there
@Comintern anything else looked weird
 
I'd split pane it - too.
Top is before, bottom after.
 
I'll just make them normal buttons since the window is resizeable now.
 
Need any other screens, or can I get back to crashing Excel repeatedly?
 
Nothing.
 
2:47 AM
Damnit. I think I have the pointer offsets wrong.
@ThunderFrame - My solution in progress to an immutable class:
Option Explicit

Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)

Private Type TPoint
    X As Double
    Y As Double
End Type

Private this As TPoint

Public Function Make(ByVal X As Double, ByVal Y As Double) As Point
    Dim newPoint As Point
    Set newPoint = New Point
    SwapFunctions
    newPoint.Make X, Y
    SwapFunctions
End Function

Private Function InternalInitialize(ByVal X As Double, ByVal Y As Double) As Point
 
@Comintern an identified problem is already half solved ;-)
 
Factory methods, read only properties. The factory sets the private members. :-)
 
That's... Man you're a wizard.
 
You can get one by newing it up, but it's just 0, 0
That's also broken ATM.
 
And once it works you add a comment line and it crashes?
 
2:50 AM
Nope, but rearranging the members might.
I think you could get around that by manually specifying all of the dispids though.
 
Those are attributes right?
 
I'm not entirely sure if VBA builds the vtable in dispid order though.
Yeah.
 
@Comintern doesn't it have to?
 
Same way you set the default member - those can be any numbers.
 
Ah yes
 
2:51 AM
Not necessarily.
It should though.
 
Wait a sec does ByVal at call site parse?
Why not use parens?
 
I'm discarding the return value.
I need it to return because the function signature makes the stack pop.
 
@Comintern IIRC - I think that OP in the forum post discovers that the scope contributes toward the order
 
Ah...that makes sense.
So it would come after the properties.
Private members don't have a dispid.
 
but Friend/Public creates a difference
 
3:05 AM
LOL - I think I corrupted my stored binary.
Got it.
 
3:37 AM
@Mat'sMug Can you make an EventDeclaration that implements IDeclarationWithParameter?
If you do that, I think I can kill a bunch of hideous code in the refactorings.
 
can you?
 
Probably.
Remind me later.
 
I'd rename the interface to IParameterizedDeclaration though ;-)
or just IParameterized
 
Sure.
 
[Hosch250/Rubberduck] Hosch250 pushed commit f2782488 to Issue1380: More stuff
 
3:44 AM
@Duga now that's a commit comment
 
LOL.
 
0
A: Immutable Object class in VBA – Creatable only through constructor and not via “New” keyword

CominternNaming I'll start off with a small style gripe (the indentation is the big one, but that's already been covered). Your naming convention for your private instance members is confusing. This... X = X_ ... is visually indistinguishable from a line continuation at first glance: X = X _ Th...

My ratio of code to disclaimer on CR was getting a bit low...
 
> OK, flame mode off.
lol
> A good clue comes from .NET, where objects have access to each other's private members (that sounds dirtier that I intended) from within the class*
*than
and LOL
 
Stupid typos. Fixed.
 
> made the warning more... flashy
 
3:56 AM
:thumbsup:
<blink></blink> would probably be a little over the top.
 
@Comintern Nice pun
 
lol
 
I may have accidentally tweeted your answer @Comintern
#VBA #hack "So you **just** swap the vtable entries of your private initializer [...], set them, and swap them back" http://codereview.stackexchange.com/a/157486/23788
 
@Mat'sMug Right on.
 
4:10 AM
[rubberduck-vba/Rubberduck] build for commit 8c454edf on unknown branch: AppVeyor build succeeded
[Hosch250/Rubberduck] Hosch250 pushed commit fb205c2f to Issue1380: UI is done
[rubberduck-vba/Rubberduck] build for commit 04acb7c8 on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] comintern pushed commit 90776369 to next: Disable hyperlinks. Closes #2831
[rubberduck-vba/Rubberduck] comintern pushed commit 7b215503 to next: Default code preview to expanded.
[rubberduck-vba/Rubberduck] build for commit c6cede03 on next: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit 4a36e128 on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] retailcoder pushed 18 commits to next (only showing some of them below)
[rubberduck-vba/Rubberduck] BZngr pushed commit e9050d8e to next: Used DeclarationType.ModuleOption to replace string op
[rubberduck-vba/Rubberduck] build for commit f499debe on next: AppVeyor build succeeded
 
Oooh, the grammar changed.
The remove/reorder parameter refactorings don't show the parameter text correctly anymore.
 
4:25 AM
Wait, wut?
 
Oh, it is just me being stupid.
 
Grammar changed a couple times (grammer also changed once due to a typo).
 
Dishes time.
BBL.
 
5:08 AM
Nothing going on?
I'm going to tie the refactoring back into the UI now.
 
5:21 AM
        [TestMethod]
        [TestCategory("TokenStreamRewriter")]
        public void RewriterInsertsRewriterOutputAtLine1()
        {
            const string content = "test";
            var module = new Mock<ICodeModule>();
            module.Setup(m => m.Clear());

            var tokens = new List<IToken> { new CommonToken(0, content)};
            var rewriter = new TokenStreamRewriter(new CommonTokenStream(new ListTokenSource(tokens)));

            CodeModuleExtensions.Rewrite(module.Object, rewriter);
 
Imagine the caveats required if we were to convince VBForums' Joacim and LaVolpe to join the chat.
 
[Hosch250/Rubberduck] Hosch250 pushed 23 commits to Issue1380
[Hosch250/Rubberduck] Hosch250 pushed 30 commits to Issue1380 (only showing some of them below)
 
I keep getting crashes when closing workbooks - I'm unsure if it's because one workbookA had a reference to WorkbookB. I close WorkbookA, and then WorkbookB, and then it seems to crash - working on reproducing it.
 
I'm having a little bit of trouble working out how to rewire the UI to the refactoring.
Maybe I'm just tired.
 
5:48 AM
[Hosch250/Rubberduck] Hosch250 pushed commit a6371843 to Issue1380: Rewire refactoring
[Hosch250/Rubberduck] Hosch250 pushed commit 5c602f33 to Issue1380: Disable unavailable commands
 
OK, the control is replaced. No new feature are added yet.
@Mat'sMug I think we should have a bit of discussion about this next bit.
How are we going to show all the updates in a reasonable way?
We could potentially have 100 definitions and call sites.
 
just show the signature?
 
What about interfaces?
We have the interface with multiple implementations.
And what about properties--we could have a getter, setter, and letter.
What about events?
OK, I guess the event definition and not the listeners.
 
00:00 - 06:0006:00 - 00:00

« first day (1009 days earlier)      last day (2171 days later) »