« first day (637 days earlier)      last day (2543 days later) » 
00:00 - 19:0019:00 - 00:00

12:01 AM
RELOAD!
[Hosch250/Rubberduck] 12 commits. 1832 additions. 585 deletions.
[retailcoder/Rubberduck] 3 commits. 181 additions. 58 deletions.
[rubberduck-vba/Rubberduck] 7 commits. 2 opened issues. 4 closed issues. 20 issue comments. 425 additions. 159 deletions.
[Vogel612/TranslationHelper\‌​] 1 commit. 31 additions. 13 deletions.
 
12:34 AM
Hi @MarkBalhoff!
 
> @TJ2016 are there any other VBE addins installed? Not that we know of any interactions, just probing for a lead...
 
12:52 AM
[Hosch250/Rubberduck] Hosch250 pushed commit 139a425c to BugBlipper: Create branch from target
 
I just got 904 TypeInfo names from Excel.exe, in 16ms.
 
Wow
What's the code like?
 
1:19 AM
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication
{
internal enum REGKIND
{
REGKIND_DEFAULT = 0,
REGKIND_REGISTER = 1,
REGKIND_NONE = 2
}
class MyTlbImpApp
{
const string pathToComServer = @"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE";

[DllImport("oleaut32.dll", CharSet = CharSet.Unicode)]
 
I figured out how to create a remote branch and how to create a branch based on a branch other than the current branch.
 
@ThunderFrame are you going to PR a replacement to the hard-coded Declarations with this? ..because I'm very tempted to try to do it :-)
@Hosch250 nice
 
Next up: figure out how to remove files not in one branch.
 
[Hosch250/Rubberduck] Hosch250 pushed commit 2913138a to BugBlipper: Publish command
 
@Hosch250 I think VS just leaves them there
 
1:30 AM
Nope.
VS removes them.
 
e.g. I have remnants of other branches on my file system
 
Really? VS cleans them out for me.
BTW, that publish is so very broken.
It lets you try to publish published branches.
This is quickly becoming the ugliest code I've ever written. HELP!!!
3
I do not like the Branches VM.
Oh wait, I know how to clean it up, at least somewhat.
Instead of binding everything, I don't bind all the selected items, but just pass them as command parameters.
Actually, I can now delete the Delete Branch button.
That will just be solely handled from the toolbar button.
 
[Hosch250/Rubberduck] Hosch250 pushed commit 7592374b to BugBlipper: Remove redundant delete branch button
 
@Mat'sMug I was planning on tackling Fallback App next. You are much more familiar with the resolver, so I thought maybe you'd be best to integrate the on-the-fly declarations. But I'm happy to help with the Reflection parts. I need to do some more reading, I haven't done a lot with TypeInfos since the days of tlbinf32. Iirc, the GetType method let's you use Linq, but I've never used the GetType approach.
 
GetType gets you the managed type so you can reflect over its members - LINQ is but a tool here. I'll take your snippet and see what I can get out of it :-)
 
1:43 AM
Yeah, I think just get all the info, and Linq on it later.
 
that said I doubt FallbackApp can ever work
the call needs to be in-process
Application.Run is in-process, the .net code can get the return value
3 hours ago, by SlowLearner
@Mat'sMug hey, looking fwd to next iteration of source control. Documentation, yes - true (don't we all?)

I tried to edit last night, the Unit testing Wiki, because I sat there for like 30 minutes trying to figure out why Assert.IsTrue would pass every test... eventually I realised that I need to run the test from the UI and NOT from directly from the code.... (rookie error) but I was figuring I'd add it to the Wiki - all I could seem to edit was the footer :-/
 
[Hosch250/Rubberduck] Hosch250 pushed commit 9329c5aa to BugBlipper: Change UserControl back to TabItem.
 
1:58 AM
@Mat'sMug 161 :-D
 
nice!
 
Hazzah - I just found a button that says "Edit" - before that all I saw as a little pencil icon for the footer and sidebar...
 
OK, now to figure out how to make the publish button become an unpublish button for remote branches.
 
2:14 AM
 
@SlowLearner ^^ the 2.0 test explorer toolwindow looks like this :)
do you have Visual Studio?
 
@Mat'sMug Yes I do... not exactly a power user though :-/ whatcha thinking?
 
NVM. I'm so sick of breaking this.
 
2:30 AM
@Hosch250 well... why not make a grouping grid to get something that looks like the Team Explorer à la Rubberduck?
 
Yeah.
I'm redoing it.
 
you don't need to get the user avatars and names in there though ;-)
although, that would be pretty nifty
 
Mine doesn't display that.
 
I was kind of kidding :)
 
My VS explorer doesn't show that.
 
2:35 AM
@SlowLearner I was thinking, if you're going to be typing up documentation / user manual stuff, that you might as well fork the repo and work off the latest build, to get screenshots of the 2.0 UI :)
oh
 
Oh, I guess it does. I just never noticed them.
 
@Mat'sMug Ahhh cool... sounds a bit like the deep end for me but will have a go. I don't want to break anything so will probably ask lots of dumb questions - please bear with me...
 
you'll want to uninstall the 1.4.3 release first
 
2:57 AM
I think I'm about to get the types and members of every single referenced COM library in a VBA project
this is completely nuts
COM reflection is completely nuts
I love it
that'll create a truckload of new Declaration instances. good thing I got the resolver lookups to O(1).
I think I'll have to rename Declaration.IsBuiltIn to Declaration.IsReadOnly
or perhaps invert the logic and make it Declaration.IsUserCode
 
This is irritating me.
 
What's up?
 
3:12 AM
Umm, I think I know what's up now.
 
@Mat'sMug is it worth getting the distinct references typeinfo for all projects? That is, if you have 5 workbooks open, only get the common libraries once?
 
Might as well eh?
Oh I see what you're saying
I'm not there yet
Besides the Declaration hashing won't allow dupes
 
@Mat'sMug Hash collisions...
 
    public override int GetHashCode()
    {
        unchecked
        {
            var hash = 17;
            hash = hash*23 + QualifiedName.QualifiedModuleName.ProjectHashCode;
            hash = hash*23 + _identifierName.GetHashCode();
            hash = hash*23 + _declarationType.GetHashCode();
            hash = hash*23 + Scope.GetHashCode();
            hash = hash*23 + _parentScope.GetHashCode();
            hash = hash*23 + _selection.GetHashCode();
            return hash;
        }
    }
@Hosch250 that's the point
 
Yep, track unique references at the VBE level, and then each project just gets reference typeinfo from that central store.
 
3:17 AM
Oh, I get it.
Well, you might (unlikely, but...) have a collision between two non-dupes.
 
lol, I'll take the risk
and remind me to buy lottery tickets if it happens :)
 
[Hosch250/Rubberduck] Hosch250 pushed commit 17f3e12c to BugBlipper: Back to two groupboxes
 
3:31 AM
Yeee haww! I got unpublish working too!
 
[Hosch250/Rubberduck] Hosch250 pushed commit f38ab563 to BugBlipper: Unpublish works.
 
I got the DeclarationType of function members set up
i.e. I can tell a PropertyGet from a PropertyLet, PropertSet, Procedure and Function
I'll need a mapping from VarEnum to a string representing the return type
I'm not sure I want to bother capturing the parameters
 
[Hosch250/Rubberduck] Hosch250 pushed commit 3f5fda5b to BugBlipper: Clean up unpublish
 
4:13 AM
        var projects = _vbe.VBProjects.Cast<VBProject>().ToList();
        if (projects.Any())
        {
            var comReflector = new ReferencedDeclarationsCollector();
            var project = projects.First();
            comReflector.DebugOutputAllReferences(project.References);
        }
holds breath
IndexOutOfRangeException
lol
string[] names = {};
int namesArrayLength;
info.GetNames(funcDesc.memid, names, 1, out namesArrayLength);

var memberName = names[0];
Project name: VBA (C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA7\VBE7.DLL)
Type name: VbVarType ()
Type name: VbMsgBoxStyle ()
Type name: VbMsgBoxResult ()
Type name: VbFileAttribute ()
Type name: VbStrConv ()
Type name: VbDayOfWeek ()
Type name: VbFirstWeekOfYear ()
Type name: VbIMEStatus ()
Type name: VbAppWinStyle ()
Type name: VbCompareMethod ()
Type name: VbCalendar ()
Type name: VbDateTimeFormat ()
Type name: VbTriState ()
Type name: VbCallType ()
Type name: Constants ()
Type name: Strings ()
omg this is so cool
I need to reflect fields/variables, and that'll give me all enum members!
 
Fallback Declarations!
 
ugh. if I can just figure out that frakkin' names array
@ThunderFrame nope. full-fledged replacement ;-)
 
Yep!
This should speed up resolving for all hosts, even Excel.
 
not sure about that
oh wow, it works!
Type name: SlicerPivotTables
Member: QueryInterface (Procedure) ::
Member: AddRef (Function) :: Variant
Member: Release (Function) :: Variant
Member: GetTypeInfoCount (Procedure) ::
Member: GetTypeInfo (Procedure) ::
Member: GetIDsOfNames (Procedure) ::
Member: Invoke (Procedure) ::
Member: Application (PropertyGet) :: Variant
Member: Creator (PropertyGet) :: Variant
Member: Parent (PropertyGet) :: Variant
Member: Count (PropertyGet) :: Long
Member: Item (PropertyGet) :: Variant
Member: _Default (PropertyGet) :: Variant
 
Should speed things up for any project that has non-pre-declared reference types?
 
4:27 AM
it shouldn't speed up anything really - if anything it makes a TON more declarations to resolve, so impact could be negative (but it won't be, since lookups are O(1))
Type name: Workbooks
Member: QueryInterface (Procedure) ::
Member: AddRef (Function) :: Variant
Member: Release (Function) :: Variant
Member: GetTypeInfoCount (Procedure) ::
Member: GetTypeInfo (Procedure) ::
Member: GetIDsOfNames (Procedure) ::
Member: Invoke (Procedure) ::
Member: Application (PropertyGet) :: Variant
Member: Creator (PropertyGet) :: Variant
Member: Parent (PropertyGet) :: Variant
Member: Add (Function) :: Variant
Member: Close (Procedure) ::
Member: Count (PropertyGet) :: Long
oh crap
Type name: IWorkbookEvents
Member: Open (Function) :: Variant
Member: Activate (Function) :: Variant
Member: Deactivate (Function) :: Variant
Member: BeforeClose (Function) :: Variant
Member: BeforeSave (Function) :: Variant
Member: BeforePrint (Function) :: Variant
Member: NewSheet (Function) :: Variant
Member: AddinInstall (Function) :: Variant
Member: AddinUninstall (Function) :: Variant
Member: WindowResize (Function) :: Variant
Member: WindowActivate (Function) :: Variant
Member: WindowDeactivate (Function) :: Variant
I need to determine if an interface is a DISPATCH - and then I can store them with DeclarationType.Event -- and then Rubberduck knows about all events possible to handle!
gosh Excel has so many enum types
I also need to tell classes from modules
so... about 80% of the work is done
 
Getting Overloads?
 
COM doesn't have overloads
 
I've no idea what is up, but Unpublish stopped working.
I've been fighting it for an hour now, and have to go do the dishes.
In fact, something happened so what I committed doesn't even work now.
 
it's probably just a tiny stupid little thing
it's always a tiny stupid little thing ;-)
hmm how do I tell a const from a field...
OMG I need to pick up the parameters - that way I can FINALLY know when a variable is being passed to a ByRef parameter in a built-in procedure!!
Type name: VbMsgBoxStyle
Field: vbOKOnly :: Long
Field: vbOKCancel :: Long
Field: vbAbortRetryIgnore :: Long
Field: vbYesNoCancel :: Long
Field: vbYesNo :: Long
Field: vbRetryCancel :: Long
Field: vbCritical :: Long
Field: vbQuestion :: Long
Field: vbExclamation :: Long
Field: vbInformation :: Long
Field: vbDefaultButton1 :: Long
Field: vbDefaultButton2 :: Long
Field: vbDefaultButton3 :: Long
Field: vbDefaultButton4 :: Long
Field: vbApplicationModal :: Long
Field: vbSystemModal :: Long
Field: vbMsgBoxHelpButton :: Long
now how do I tell a field is an enum member....
Type name: ErrObject
	Implements _ErrObject
Type name: _ErrObject
	Implements IDispatch
crap, pretty much everything in the Excel object model implements IDispatch
I think I'll have to rely on naming conventions :-/
 
5:06 AM
Oh? So how does Mid appear to have overloads? Is it just argument analysis in function?
 
Member: Mid (Procedure) ::
Member: MidB (Procedure) ::
oh you mean Mid$
not sure what it is, but it's not an overload
and I'm not seeing it reflected either
 
5:23 AM
Oops, I meant InStr. There's one that takes StartPosition as first argument, and another that takes string.
 
that would make a good question for SO I think - "If COM doesn't support overloading, what's up with the VBA InStr function?"
 
Are you getting the default property attributes?
 
I could
OMG
little tweaks to Declaration and then I can resolve Range("A1") to an implicit reference to Range.Value
and a whole bunch of new inspections with it
 
I don't remember seeing si many OMGs from you in one day...
 
dude, I'm doing COM REFLECTION FFS
3
 
5:31 AM
@Mat'sMug in a Reflection candy shop...
 
:-)
 
You know we have to implement a better object browser...2.1
 
whistles
0
Q: How to tell events from other functions in COM?

Mat's MugI'm using the ITypeLib, ITypeInfo interfaces and the TYPEATTR, FUNCDESC and VARDESC types to inspect the types of some COM libraries. It's working pretty well, but I'm hitting a bit of a wall trying to determine whether the members of a given type/interface are events, or just "regular" function...

I can't believe the ISomethingEvents naming scheme is the only way to determine that an interface's members are event definitions.
 
You could make code suggestions that suggest replacing a literal with a named enum member, or even a bitwise combination!
 
hmm.. I'm not picking up the values yet
so there's VARKIND.VAR_CONST - is an enum type a type that only defines VAR_CONST fields?
Member: Open (Function) :: VT_HRESULT
ah, I think I got it
got the enums too
hmm no
 
6:08 AM
Revert "Clean up unpublish"

This reverts commit 3f5fda5bcc29f0a1295a0b61a7acdf2d8069bfc9.
[Hosch250/Rubberduck] Hosch250 pushed commit 54ebed0a to BugBlipper: Unpublish works. It was a stupid mistake. Todo: Do not display non-local remote branches.
[Hosch250/Rubberduck] Hosch250 pushed commit 0e57f7db to BugBlipper: Bug report
 
got it!
Project name: VBA (C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA7\VBE7.DLL)
Type name: VbVarType (Enumeration)
Field: vbEmpty (EnumerationMember) :: Long
Field: vbNull (EnumerationMember) :: Long
Field: vbInteger (EnumerationMember) :: Long
Field: vbLong (EnumerationMember) :: Long
Field: vbLongLong (EnumerationMember) :: Long
Field: vbSingle (EnumerationMember) :: Long
Field: vbDouble (EnumerationMember) :: Long
Field: vbCurrency (EnumerationMember) :: Long
Field: vbDate (EnumerationMember) :: Long
Field: vbString (EnumerationMember) :: Long
Type name: Constants (Module)
Field: vbObjectError (Constant) :: Long
Field: vbNullString (Constant) :: String
Field: vbNullChar (Constant) :: String
Field: vbCrLf (Constant) :: String
Field: vbNewLine (Constant) :: String
Field: vbCr (Constant) :: String
Field: vbLf (Constant) :: String
Field: vbBack (Constant) :: String
Field: vbFormFeed (Constant) :: String
Field: vbTab (Constant) :: String
Field: vbVerticalTab (Constant) :: String
Type name: Workbook (Class)
	Implements _Workbook
	Implements WorkbookEvents
COM puzzles me
Type name: Collection (Class)
	Implements _Collection
Type name: _Collection (Module)
	Implements IDispatch
ok, it's not a Module
got it
I think I got all the data I want.
except the parameters
 
6:38 AM
All that data would look great in XAML....
 
huh?
oh
lol
 
New Object Browser ;-/
 
[retailcoder/Rubberduck] retailcoder pushed commit ac429f32 to TypeInfo: Implemented COM reflection. todo: include parameters, and actually generate Declaration instances.
 
1. Make it work
2. Make it fast
3. Make it pretty
4. Put it on CR
TTGTB
hey @Zak
I really need to get the parameters to work too. I want that "variable not assigned" inspection to be able to see a variable passed to a non-usercode ByRef parameter
man, we'll be able to implement not only host-specific inspections, but also reference-specific ones
like ADODB inspections, and Regular Expressions, and what not
 
Yep. Just need a way to get the same info for project document-type components. Eg. Controls and sections on Access forms and reports.
Eg. An access form footer, under 2010 at least, is declared as a With Events Section.
 
6:52 AM
then it's in the Access object model and we'll be picking it up
 
7:04 AM
But the FormFooter member won't be in the access library. The FormFooter declaration exists in the form/document (not the code module), and only when the form actually has a footer.
It's like a public variable on the form class, but it's not defined in code.
 
Eh, we'll figure it out by 3.0 :-)
 
@Mat'sMug how far do you dig? If a project has VBA that calls into VBIDE members, but doesn't reference VBIDE, your TypeInfo gets you details about the VBE member, from the host reference, but presumably you could get a GUID and keep resolving down the tree, if you needed to.
Resolve references on the fly, if necessary.... => code inspection "suggest explicit reference"
 
I'm too tired to think of the implications atm... 'night!
 
Night
 
 
3 hours later…
9:58 AM
@Duga Uh oh. What's @Mat'sMug up to now? =;)-
4
 
5. Think of the implications
well, I can think of plenty... Accurate resolver, multiple code inspections and suggestions, power Object Browser, Intellisense, compare type libraries, document type libraries,.....
 
10:39 AM
> @retailcoder - i tried on another installation and here it is working as expected - tremendous performance improvement. GREAT. I need to fix my laptop setup ...

I love the outlook:
> but we're just about to get parsing stabilized: once that's done, we'll only be parsing all modules once at startup, and then only modified modules, in the background, as it's being modified.
 
11:17 AM
#767 references back to the 2.0 Issue, but is not closed yet...
also the SmartIndent Selection and Member commands are not checked in the 2.0 issue...
is that intended?
 
11:50 AM
[Vogel612/TranslationHelper]‌​ Vogel612 pushed commit 85c69054 to develop: Fixed layouting for Overview to display buttons
[Vogel612/TranslationHelper]‌​ Vogel612 pushed commit 56fe90af to develop: Clean up the FIXMEs that are already done
[Vogel612/TranslationHelper] build for commit 56fe90af on develop: The Travis CI build passed
 
 
1 hour later…
12:53 PM
@RubberDuck well I figured since identifier lookups are now O(1) I might as well bring in the whole actual referenced type libraries :-)
@Vogel612 meh, the commands are there.. I need to get the indenter to...well, indent
 
1:18 PM
Also... the code explorer is now a xaml treeview, but there are issues :-/
 
1:42 PM
@Mat's Mug what do you think of creating a separate test project that reads a lot of real world test code and runs it through the parser to see if anything fails?
 
> There are two limitations so far:
* Project-wide constants are ignored
* Option Compare Database is ignored (it is treated as Text instead)

Other than that it should work in most cases. I'm still trying to add more tests.
 
or the same test project, just with external test files
 
2:36 PM
@awgaya not sure about this. if tests take too long to run, we won't be running them. I already need to get myself into the habit of running them before committing/pushing, instead of having the appveyor telling me I broke something
can't hurt to have 'em around to test things when we rebuild the grammar though
 
@Mat'sMug that's why we set up CI to begin with. xD
 
IKR.. because I suck at testing ...sigh
 
Lol. Everyone sucks at testing. If any of us were good at it, QA would be out of a job.
 
well that's reassuring :)
 
> @autoboosh I think this is pretty awesome as is - and it solves more problems than it causes; I'll take the PR anytime!
 
2:48 PM
running through 20 test modules takes 6 secs, that's still acceptable, right? :P
 
sure!
 
3:26 PM
> Nope, no other addins installed

I think I have lead for you though.

On the machine that was working I was getting a requester to install vsta_ide.msi when I launched VBA

It looks like it is needed by Solidworks.

I had been canceling the install, but today I installed it and now I'm getting the HRESULT error on the machine that was working.
 
:28002865Hi @Mat'sMug Interesting stuff! I've browsed enough SO and CodeReview VBA/Office questions to be aware of the Rubberduck development project. You and RubberDuck always seem extremely competent.
 
why thanks!
we try to look like we know our stuff ;-)
 
Always a good plan in theory ;)
 
4:03 PM
> We've had a number of support issues involving a COM exception at startup, but I can assure you that a prompt to run `vsta_ide.msi` is completely unheard of. Pretty much every time, the error was due to Rubberduck not being installed as admin, or not being registered for a non-admin user, or somehow not registering correctly during the installation.

I suspect the latter could be the case here, try running this in an admin-elevated command prompt:

c:\windows\microsoft.net\framework\v4
 
@MarkBalhoff so, have you downloaded and tried it? (did it work out of the box for you?)
 
4:21 PM
> Here's a version of the preprocessor that should cover 90%+ cases encountered in the real world. I've tried to test it as best as I could, based on code given to us by @Pitterling.

Known limitations:
* Project-wide cc-constants are not supported
* Option Compare Database is not supported
* No differentiation between different kinds of number types (only decimal) thus the results of the preprocessor may not always match 1000% the VBE result
[rubberduck-vba/Rubberduck] build for commit e7a055e6 on unknown branch: AppVeyor build succeeded
> Wow this is HUGE!! Is it possible that some (most?) of this hard work could be reused for eventually interpreting actual If blocks and detecting unreacheable code, like, in Rubberduck 4.0?
[rubberduck-vba/Rubberduck] retailcoder pushed 17 commits to next (only showing some of them below)
[rubberduck-vba/Rubberduck] autoboosh pushed commit 8ed900e2 to next: remove macro/compilation directives (removed by preprocessor)
[rubberduck-vba/Rubberduck] autoboosh pushed commit 66033ec5 to next: fix failing tests because of missing vbe.Version mock property
[rubberduck-vba/Rubberduck] autoboosh pushed commit a77bda27 to next: add EMPTY keyword
[rubberduck-vba/Rubberduck] autoboosh pushed commit e8f6b041 to next: add different locale parsing test
move to expression ast for easier maintenance

Each IExpression represents a cc-expression. An expression produces an IValue. Each IValue knows how to let coerce itself to the target type.
[rubberduck-vba/Rubberduck] autoboosh pushed commit a44c320b to next: consider declared option compare method when comparing strings
[rubberduck-vba/Rubberduck] autoboosh pushed commit 56d8523e to next: add vbaparser tests based on real world code
[rubberduck-vba/Rubberduck] autoboosh pushed commit 5df7a89e to next: add preprocessor validity tests
[rubberduck-vba/Rubberduck] autoboosh pushed commit e7a055e6 to next: Merge branch 'next' of github.com/rubberduck-vba/Rubberduck into interpreter
Merge pull request #1170 from autoboosh/interpreter

Preprocessor for Rubberduck (#1132)
[rubberduck-vba/Rubberduck] build for commit 9e88a710 on next: AppVeyor build succeeded
> Yes, it could be reused. Conditional compilation expressions are quite limited, so they only represent a subset of what would be allowed in "real" if expressions.

Concerning unreachable code. There's already an implementation here: https://github.com/autoboosh/Rubberduck/commit/1ba0c4122363529309ce047403a6565edf006646 based on a control flow graph implementation, also in the same branch. Not sure if that's what you are looking for though. It's only intraprocedural. There's also cyclomatic c
 
4:55 PM
> This actually works with the latest version.
> @autoboosh oh nice! is it part of what I just merged?
> No, I think he's just using a 1.x version :).

The only important changes in the recently merged PR were the addition of the EMPTY keyword plus removal of the macro rules.
> Ok cool. Closing then!
> #1169 is the same issue, but with a clearer example. Closing this one.
> You suspected correctly, running regasm fixed things

Thank you
2
> With precompiler directives handled, and the grammar/parser having no more known issues, I'm 99.99999% sure that code won't be a problem with v2.0 - closing the issue, but I'll reference here on a new one so that we remember to treat Form_ document modules with an attached designer as, well, forms with controls.
> Tried out @ThunderFrame's last code example in this thread and the `Declaration `threw a `System.Reflection.AmbiguousMatchException` on line 322:

`var method = Context.GetType().GetMethod("typeHint");`
> MS-Access forms are *document* modules (as opposed to Excel forms, which are `UserForm` modules) and currently get picked up as such:

![MS-Access Forms](https://cloud.githubusercontent.com/assets/5060805/10416578/a60a64f2-705f-11e5-91d4-fc5a2cd14551.png)

When the host application is MS-Access and a document module's name starts with `Form_`, we need to inspect its designer to pick up the controls, like we do for UserForms.
 
5:14 PM
@Duga YES!
 
lol
love your "grammar has no issues anymore" comments
just found one 5 mins ago :p
 
shhh... don't tell anyone ;-)
 
it's nothing bad though, just that apparently option compare etc. statements can have line continuations in them
 
seriously though.. compared to what it was a year ago... it handles literally everything I could think of throwing at it
 
5:21 PM
when did you start working on v2.0?
 
@awgaya huh? WS handles that
@awgaya right after releasing 1.4.3, in July
I started dismantling all the components, broke the Master build.... fun times
 
I had to decouple everything. The architecture of 1.x was going nowhere, it was turning into a big gigantic pile of poo
so I flipped everything around and implemented IoC
the way the menus are created right now, is light-years away from the 1.x way
now we have ICommand implementations that are constructor-injected InSingletonScope wherever they're needed.. it's awesome :)
but at the same time, doing that literally broke everything
IOW, I bought Michael Feathers' book too late
 
michael feather's book?
the refactoring one?
 
> Working Efficiently with Legacy Code
yeah
in theory it should have been possible to keep the project in a working state while the 2.0 stuff was being worked on
then we could have shipped it incrementally
but I didn't
so... last release was in July 2015 :)
 
5:30 PM
2.0 will be worth the wait.
 
damn right
BTW the tweeting duck feed seems to have missed this one:
Aaaand merged! It's confirmed: Rubberduck 2.0 will handle (most) preprocessor directives! #OSS Rocks!! https://github.com/rubberduck-vba/Rubberduck/pull/1170
 
Whoah! Seriously?!
 
lol you're way too optimistic :P I can only hope it works when released in the wild
 
You got directives parsing?
 
yes, didn't have a lot of work the past few days so read the vba spec a couple of times :p
 
5:33 PM
@RubberDuck no no, no, not just parsing - interpreted too
 
@Mat'sMug I intended to but never got around to it. I would certainly like to try it. Will do when I get a minute and let you know.
 
Nice work. I've missed so much.
 
@RubberDuck i.e. the "dead code" branches won't even hit the parser, which means the resolver won't need to cope with conditional declarations and multiple possible locations for Declare Function Foobar()
and I'm working on a COM reflection branch, so that we can trash all the stupid "built-in declarations" classes, and leverage the actual COM types being referenced by a VBA project. that way not only we can tell where and how you're using MsgBox, we can also tell you where you're using regular expressions.. and even tell what string literal or variable contains a regex pattern :)
 
oh nice
 
oh and then we can also tell when an "unassigned variable" is being passed as a ByRef argument to a built-in function
 
5:38 PM
how can you tell if a string contains a regex pattern, is that some special type?
 
:)
you know we can implement host-specific inspections, by telling whether the host app is ExcelApp
well we could implement reference-specific inspections too
 
sounds great =]
 
so if you're referencing the regex library, we can know what valueStmt you're giving the Match method - and we know that has to be a regex
 
ah ok
 
we can also tell when you're not closing your ADODB.Recordset object, because we can know whether the Close method is called or not
etc, etc, etc
 
5:43 PM
is that something you'd find out via the resolver or is that info also available via COM somehow?
 
resolver
the only thing screwing it over, is late-binding now
 
@Mat'sMug One more reason not to late bind.
Although, I don't like making code decisions based on my toolset...
 
hey I just realized, if there's a reference to the Rubberduck typelib, the resolver will pick up calls to the AssertClass, and we can have inspections that warn about test methods without an assert call!
 
nice =]
 
> Test will always succeed
 
5:48 PM
Wait... Why wouldn't we find CreateObject() calls, grab the argument, and go look up the com type?
 
@RubberDuck yes, we could
 
Very cool!
Lots of edge cases, but the simplest one would be easy enough I think.
 
I only have prototype code for now, tonight I'm making it give me an actual IEnumerable<Declaration>
 
Sweet.
Well, back to my motion controller banishment.
 
the prototype code is already TONS better than the hard-coded VbaStandardLib and ExcelObjectModel and that other handful of static classes I hacked together
later!
@MarkBalhoff cool! then you can see everything we've done in a year's time when 2.0 is out! :)
 
6:17 PM
[Hosch250/Rubberduck] Hosch250 pushed commit ffaf9f1b to BugBlipper: Fix branches display, clean a couple things up, break a couple others.
> Okay I have ideas. Tons actually. One would be a "My duck [does something]. #SmartDucky" campaign. Something along the lines of...

> My duck can extract a method out of any code block. #SmartDucky #Refactor #VBA

> [animated .gif showing the *Extract Method* refactoring extracting a method out of a code block]

<!-- -->

> My duck tells me if my #VBA code still works as intended after I changed it. #SmartDucky #UnitTest

> [animated .gif showing the *Test Explorer* running unit test
 
lol
 
like, one tweet a day type of thing
not to mention the big bold "IT'S HERE!!" RD News post
 
6:36 PM
[Hosch250/Rubberduck] Hosch250 pushed commit 22b51ff4 to BugBlipper: Fix things up
 
There, that is nicer.
 
that sounds great
your stack overflow posts help a lot to spread rubberduck as well I think
that's the reason I found this project tbh, some guy on stack overflow said something like "I'll show it to you using this rubberduck addin..." :P
 
Relevant:
14
Q: Hitchin' a ride

Mat's MugSome background About 6 months ago an idea emerged in the VBA Code Review chatroom, and together with a fellow VBA reviewer and CR addict, I started working on what became Rubberduck, an open-source project that has seen quite a lot of its source code posted and peer reviewed on Code Review. I ...

 
[Hosch250/Rubberduck] Hosch250 pushed commit 3ee87337 to BugBlipper: Less intrusive refresh.
 
I am so close to PRing that.
 
6:49 PM
Awesome!
 
So far too. I'm sure I've got at least a week left.
In all but one place, it is as good as or better than the previous one.
 
Take the time you need, no pressure!
 
I'd like to include Revert, and Compare Diff, and possibly History before I PR, but I don't think I'm that patient.
 
lol
 
Maybe that would be good for 2.1.
 
6:52 PM
I'd keep revert in 2.0 if possible
 
Well, I think I'll get include/exclude/untracked done and test and PR.
Nothing preventing me from adding Revert after PR but before release.
 
Of course!
 
I wonder what the best method to initiate an action after login is.
I could make them redo it.
That is the default, because it is an exception thrown to the parent that triggers the login.
On the other hand, that is unintuitive.
For push/sync, I have an enum {None, Push, Sync} to trigger the action that I set before I pass the exception to the parent (which is where exceptions are displayed).
Then, when the user logs in, I try it again when the provider is changed.
I could set up something similar for the branches view, but remember the branch the action is being taken on as well.
 
00:00 - 19:0019:00 - 00:00

« first day (637 days earlier)      last day (2543 days later) »