« first day (288 days earlier)      last day (2892 days later) » 

12:01 AM
RELOAD!
[Cardshifter/Cardshifter] 3 commits. 1 issue comment.
[ckuhn203/VBEX] 4 commits.
[retailcoder/Rubberduck] 8 commits. 8 opened issues. 1 closed issue. 13 issue comments.
2
[Zomis/Fighting] 1 commit.
[Zomis/GithubHookSEChatService] 1 opened issue. 1 issue comment.
 
12:21 AM
@RubberDuck I may merge GrammarIsFun tonight :)
What's our dev branch?
Next?
 
Yeah. Next.
I probably need to go ahead and delete 1.21 now too. Did I do that yet?...
Oh. @Mat'sMug ^
ping
 
1:04 AM
Hi!
@RubberDuck Nope :)
Merging master into grammar branch... 1094 errors in 5 files....
...all in the VBA.Grammar namespace... which is now moot. Aaaaand... fixed.
 
1:47 AM
dammit, debug config is borked again
ugh wtf
 
@Mat'sMug ` git checkout origin/master filename`
 
why?
 
II can't remember the file that holds the build configs though.
Oh. You got it?
 
yeah, ...merging borked it
i.e. master had a broken config
 
Checkout the good copy from origin master.
Just the one file.
I think it's in the solution file.
Maybe Rubberduck.csproj... Can't remember.
 
2:00 AM
it's the solution file
I took the master copy
and had to re-add the Rubberduck.Parsing project into the solution
oh wait a minute, ..I haven't pushed yet
 
Pull first. If you still can.
Maybe your local master was out of date.
 
my local working copy is.. GrammarIsFun
 
Ok. Git pull origin master or checkout origin/master solutionFile
 
what will that do?
 
Either should get you back up I think.
 
2:05 AM
but I already pulled from master.. that's what messed it up!
 
Pull merged it. Checkout will replace it.
 
didn't quite merge, there were conflicts - I took the master copy
 
#FML
 
Then I misunderstood. Ignore the duck.
 
2:07 AM
I thought master was up-to-date with 1.21
 
It is.
I thought it was.
 
github says 1.21 is 4 commits behind...
I don't get it
 
> There isn't anything to compare.

master is up to date with all commits from 1.21. Try switching the base for your comparison.
interesting
 
So... If you took master's solution file, how can it be borked? So confused.
 
2:12 AM
add-in could not be loaded. ...and regasm doesn't fix it
 
Wtf?
 
^^
 
Wait... There's. No.
Never mind.
 
ok I got it
I mean, I can get the add-in to load into Excel.
trying f5-debug again
but before that...
> build 1.21.5557.37652 (MSIL)
ok now trying f5-debug
(rebuild solution)
yeah. borked.
I'll try re-adding a post-build regasm.exe (using debug64 config)
aaaaaaaaaaaaaaaaaaaaaaarrrgh FUCK
 
I need my laptop. Trying to view the compare froze mobile chrome lol. Sorry buddy. I won't be much help tonight. Good luck.
What?!
 
2:21 AM
not working
 
it's dumb
I can register the built dll and probably attach to the EXCEL.EXE process
 
Go drink a beer.
 
but not launch from f5
damn
@RubberDuck you're right
lol
oh well, I can register the built dll and attach to EXCEL.EXE process manually, and breakpoints work.
sucks, but works
 
> merged from master
> moved extensions and Selection/QualifiedSelection types to Rubberduck.Parsing
 
2:31 AM
#pushing-it
lol
 
> removed ModuleOptionsListener
> debug is broken
 
damn, grammar is fun
 
3:26 AM
> added AsTypeName to Declaration
> implemented AsTypeName
 
3:58 AM
when I'm done with this, the entire VBA and Reflection namespaces will have to be moved to the Rubberduck.Parsing project...
 
4:08 AM
1144 errors in 66 files ...boy #GrammarIsFun
 
4:42 AM
32 errors in 8 files .. long live R#
24 errors in 6 files - all are IInspection.GetInspectionResults implementations using anIdentifierUsageInspector.. which is dying tonight.
 
5:26 AM
builds
 
> Moved listeners to Rubberduck.Parsing.Listeners. This is work in process; most listeners will no longer be needed after the symbol table is completed.
 
I think we can expect major performance boosts if that's done right
1.21 walks the parse trees WAY to often, and much more than actually needed.
even the code explorer's TreeViewListener is moot.
shortly put, DeclarationSymbolsListener traverses all parse trees once, and VBProjectParseResult then contains all declared identifiers, their type, location, scope, visibility, etc. - there's no need to re-traverse the parse trees to get the methods, and once more to get the declarations, and once more to get the assignments, and once more to get the variable references... we'll need 1 pass to get all identifiers, and another pass to get all usages of every single identifier.
actually the latter pass only needs to be done when it's needed to do so; there's no need to get all usages just to render a treeview, for example.
I like where this is going.
...except merging that branch is becoming VERY scary now.
but it's for the Greater Good.
 
> Let's add a "Find all references" search command in the Code Explorer context menu, and in the code pane's context menu, so that it's possible to find all references of an identifier just by right-clicking it. Ideally the context menu button should be disabled if the cursor isn't located on an identiifer that was picked up by the DeclarationSymbolsListener.
> Let's add a button to the to the code explorer context menu, so that when a class module is right-clicked, it's possible to locate all implementations in all opened projects.
 
5:46 AM
TTGTB
 
1.3 is REALLY starting to sound like a 2.0...
 
 
4 hours later…
10:18 AM
> @christophocles as someone new to the code base, do you feel it would help if we created an [Easy-Fix] label and tagged the issues we feel would be easy for someone new to handle?
 
 
2 hours later…
11:53 AM
> The first version of our integrated source control will always commit all changes. Add the ability to exclude changes.
 
 
1 hour later…
1:07 PM
And my laptop just crashed. Hard. For no reason.
 
1:32 PM
> Added Changes View, Presenter, and Tests
 
2:03 PM
> Giving the view a List of FileStatusEntry is dumb. Just give it a list of filepath strings.
> Minor Cleanup to ChangesView & Presenter
 
 
2 hours later…
3:46 PM
> rewired up sc in rubberduck menu
> Commit button only enabled if a message and action type are present
 
4:23 PM
> reset view after commit
 
 
2 hours later…
5:57 PM
@Duga There's plenty of time @RubberDuck, is there a particular challenge with changesets?
I just found 4 dusty CD's... labeled Microsoft Visual Studio 6.0
#298 might just end up happening!
 
6:13 PM
@Mat'sMug It just needs a change to GitProvider is all. I'm not saying it's releasing without it.
Just needed to document it for now.
 
cool :)
supporting both VBA & VB6 is a challenge though, especially with source control - only VBA files need to be extracted. And unit testing in VB6 might not be possible.
I'd rather not think about it for now
 
This is beyond annoying.
 
what's that?
where's the data coming from for the bottom 2 grids?
 
It's putting the length of the file name into the grid instead of the filenames...
I think I know how to fix it.
Just annoyed at it.
 
lol is it databound?
 
6:21 PM
Yeah.
 
could be worse, it could be listing a bunch of System.String items...
 
So, Databinding a list of strings does that crap.
 
weird
is there a DataMember set?
 
What's that?
 
WinForms databindings typically work with a DataSource and a DataMember
I hate WinForms databindings
show me your binding code
 
6:24 PM
I bound a list to the source. This works.
bbiam
Ahhhh
42
Q: How to bind a List<string> to a DataGridView control?

agnieszkaI have a simple List<string> and I'd like it to be displayed in a DataGridView column. If the list would contain more complex objects, simply would establish the list as the value of its DataSource property. But when doing this: myDataGridView.DataSource = myStringList; I get a column called ...

 
oh wow
11 mins ago, by Mat's Mug
I hate WinForms databindings
about unassigned variables...
consider this:
Dim foo As Integer
Public Sub SetFoo(ByRef bar As Integer)
    bar = 123
End Sub
SetFoo foo
^^ is foo assigned?
 
Yeah. I might as well make the changes to GitProvider now. But I've gotta go for a bit.
@Mat'sMug yes. Right?
 
well, as far as the VBA runtime and the actual program is concerned, of course it is
but how the F are we going to be able to detect that?
 
6:39 PM
Just double checking, but that
that ^^
 
oh I have an idea
if we can determine that foo is passed to a procedure as a ByRef argument, then we can assume that it's assigned
 
No we can't. Not really.
 
there's already an inspection that will pick up if parameter bar isn't assigned
semantically, I think it's fine to make that assumption.
 
We'd technically need to relate foo to bar and then see if bar has been assigned.
 
that would be overkill though
 
6:42 PM
It's certainly a step in the right direction. Yes.
 
it would involve verifying every single procedure call of SetFoo
 
I think it might work well enough that it's worth trying.
*your way is worth trying.
 
the hard part is to determine that 1) foo is passed to SetFoo and, 2) that the parameter is ByRef
named arguments complicate everything
 
But I'm getting dirty looks. Movie time. See ya later.
 
lol
see ya
:)
 
7:03 PM
I think I'm progressing. Parsing needs to make 2 passes (excluding the actual parsing of the text file). 1st pass: collect all declarations (including modules/class modules, fields, enums, types, functions, procedures, properties, etc.). 2nd pass: locate all AmbiguousIdentifierContext instances in the parse tree, and map them to a declaration whenever possible.
I've already implemented the listener for pass 1. Working on the listener for pass 2.
I'll literally be .Adding IdentifierReferences to Declarations - so if all goes well, finding unassigned variables will look something like _declarations.Where(d => d.DeclarationType == DeclarationType.Variable && !d.References.Any(r => r.IsAssignment))
the listener has to do the dirty work of figuring out the context around an identifier
 
8:10 PM
        private bool IsGlobalField(Declaration declaration)
        {
            // a field isn't a field if it's not a variable or a constant.
            if (declaration.DeclarationType != DeclarationType.Variable ||
                declaration.DeclarationType != DeclarationType.Constant)
            {
                return false;
            }

            // a field is only global if it's declared as Public or Global in a standard module.
            var moduleMatches = _declarations[declaration.ComponentName].ToList();
#GrammarIsFun!
 
8:21 PM
I hope I'm doing this right...
        private bool IsGlobalProcedure(Declaration declaration)
        {
            // a procedure is global if it's a Sub or Function.
            // since we have no visibility on module attributes,
            // we must assume a class member can be called from a default instance.

            if (declaration.DeclarationType != DeclarationType.Procedure ||
                declaration.DeclarationType != DeclarationType.Function)
            {
                return false;
            }

            // Friend members are only visible within the same project.
 
8:37 PM
that should do it
        private bool IsInScope(Declaration declaration)
        {
            return declaration.Scope == _currentScope
                || declaration.Scope == ModuleScope
                || IsGlobalField(declaration)
                || IsGlobalProcedure(declaration);
        }
and here we go:
        private void EnterIdentifier(RuleContext context, Selection selection)
        {
            var name = context.GetText();

            // there should only be one match here.. in theory...
            var matches = _declarations[name].Where(IsInScope);

            // ...but let's not make that assumption:
            foreach (var declaration in matches)
            {
                var isAssignment = IsAssignmentContext(context);
                var reference = new IdentifierReference(_projectName, _componentName, name, selection, isAssignment);
 
8:59 PM
> implemented IdentifierReferenceListener
 
I'm not going to be home until much later tonight. I think I have all I need now, just need to wire it up and then IdentifierUsageInspector can be removed, and the inspections using it can start using the _declarations directly.
gotta go. later!
</rubberducking>
 
9:34 PM
Oh, ...EnterIdentifier needs to tell a function from an array lol
 
 
1 hour later…
10:40 PM
> 21 + 8 downloads :)
 
11:06 PM
Very nice. Very very nice.
Changes to the SC API will break COM client code. Just FYI.
 
11:27 PM
How the hell from Twitter do you get the right URL so it "boxes"?
Writing readable code. Do it. Now. http://importblogkit.com/2015/03/writing-readable-code/ via @importBlogKit
Nvm
Good post
 
11:49 PM
@RubberDuck 1.3 will be a breaking change across the board ;)
 

« first day (288 days earlier)      last day (2892 days later) »