Skip to content

Commit 522f1fa

Browse files
committed
changed iCS_S_MemberCall rule to allow exclamation mark, so that rs!Name picks up "Name" as a member of "rs" - it's not technically correct, but it's better than picking up ! as type hint.
1 parent 9798c63 commit 522f1fa

File tree

2 files changed

+41
-35
lines changed

2 files changed

+41
-35
lines changed

Rubberduck.Parsing/Grammar/VBA.g4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ iCS_S_ProcedureOrArrayCall : (ambiguousIdentifier | baseType) typeHint? WS? LPAR
585585

586586
iCS_S_MembersCall : (iCS_S_VariableOrProcedureCall | iCS_S_ProcedureOrArrayCall)? iCS_S_MemberCall+ dictionaryCallStmt?;
587587

588-
iCS_S_MemberCall : '.' (iCS_S_VariableOrProcedureCall | iCS_S_ProcedureOrArrayCall);
588+
iCS_S_MemberCall : ('.' | '!') (iCS_S_VariableOrProcedureCall | iCS_S_ProcedureOrArrayCall);
589589

590590
iCS_S_DictionaryCall : dictionaryCallStmt;
591591

Rubberduck.Parsing/Grammar/VBAParser.cs

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -13018,10 +13018,16 @@ public override TResult Accept<TResult>(IParseTreeVisitor<TResult> visitor) {
1301813018
public ICS_S_MemberCallContext iCS_S_MemberCall() {
1301913019
ICS_S_MemberCallContext _localctx = new ICS_S_MemberCallContext(_ctx, State);
1302013020
EnterRule(_localctx, 234, RULE_iCS_S_MemberCall);
13021+
int _la;
1302113022
try {
1302213023
EnterOuterAlt(_localctx, 1);
1302313024
{
13024-
State = 2380; Match(T__7);
13025+
State = 2380;
13026+
_la = _input.La(1);
13027+
if ( !(_la==T__7 || _la==T__1) ) {
13028+
_errHandler.RecoverInline(this);
13029+
}
13030+
Consume();
1302513031
State = 2383;
1302613032
switch ( Interpreter.AdaptivePredict(_input,389,_ctx) ) {
1302713033
case 1:
@@ -16286,9 +16292,9 @@ private bool valueStmt_sempred(ValueStmtContext _localctx, int predIndex) {
1628616292
"\x2\x116\x2\x118\x2\x11A\x2\x2\x16\x5\x2\x16\x16##\xA8\xA8\x4\x2PP\xA6"+
1628716293
"\xA6\x3\x2&\x31\x4\x2\xB1\xB1\xB5\xB5\x3\x2GK\x5\x2\xBE\xBE\xC5\xC5\xC9"+
1628816294
"\xC9\a\x2\x12\x12\x16\x16YY\x81\x81\x8C\x8C\x4\x2\x8F\x90\xB9\xB9\x4\x2"+
16289-
"\x66h\x9F\x9F\x4\x2\x5\x5\t\t\x4\x2\xA1\xA1\xA7\xA7\x4\x2\x18\x19\x82"+
16290-
"\x82\x3\x2\x18\x19\f\x2\x17\x17\x1A\x1A!!$$\x35\x35[[__\xA0\xA0\xA5\xA5"+
16291-
"\xB2\xB2\a\x2ZZ\x64\x64\xBE\xC1\xC3\xC3\xC7\xC7\x4\x2\x4\x4\n\n\x6\x2"+
16295+
"\x66h\x9F\x9F\x4\x2\x5\x5\t\t\x4\x2\xA1\xA1\xA7\xA7\x4\x2\x4\x4\n\n\x4"+
16296+
"\x2\x18\x19\x82\x82\x3\x2\x18\x19\f\x2\x17\x17\x1A\x1A!!$$\x35\x35[[_"+
16297+
"_\xA0\xA0\xA5\xA5\xB2\xB2\a\x2ZZ\x64\x64\xBE\xC1\xC3\xC3\xC7\xC7\x6\x2"+
1629216298
"LLvw\xAC\xAC\xCE\xD2\x6\x2\x3\x3\a\b\n\v\xBB\xBB\x6\x2NNRR\x85\x85\x8A"+
1629316299
"\x8A\v\x2\f\x38\x41\x46L\x64iinxz{\x80\x85\x8A\x8F\x91\xBA\xBD9\x2\x11C"+
1629416300
"\x3\x2\x2\x2\x4\x120\x3\x2\x2\x2\x6\x157\x3\x2\x2\x2\b\x15D\x3\x2\x2\x2"+
@@ -17142,12 +17148,12 @@ private bool valueStmt_sempred(ValueStmtContext _localctx, int predIndex) {
1714217148
"\x2\x946\x948\x5\xECw\x2\x947\x946\x3\x2\x2\x2\x948\x949\x3\x2\x2\x2\x949"+
1714317149
"\x947\x3\x2\x2\x2\x949\x94A\x3\x2\x2\x2\x94A\x94C\x3\x2\x2\x2\x94B\x94D"+
1714417150
"\x5\xF4{\x2\x94C\x94B\x3\x2\x2\x2\x94C\x94D\x3\x2\x2\x2\x94D\xEB\x3\x2"+
17145-
"\x2\x2\x94E\x951\a\x4\x2\x2\x94F\x952\x5\xE6t\x2\x950\x952\x5\xE8u\x2"+
17146-
"\x951\x94F\x3\x2\x2\x2\x951\x950\x3\x2\x2\x2\x952\xED\x3\x2\x2\x2\x953"+
17147-
"\x954\x5\xF4{\x2\x954\xEF\x3\x2\x2\x2\x955\x957\x5\xF2z\x2\x956\x955\x3"+
17148-
"\x2\x2\x2\x956\x957\x3\x2\x2\x2\x957\x959\x3\x2\x2\x2\x958\x95A\a\xD8"+
17149-
"\x2\x2\x959\x958\x3\x2\x2\x2\x959\x95A\x3\x2\x2\x2\x95A\x95B\x3\x2\x2"+
17150-
"\x2\x95B\x95D\t\v\x2\x2\x95C\x95E\a\xD8\x2\x2\x95D\x95C\x3\x2\x2\x2\x95D"+
17151+
"\x2\x2\x94E\x951\t\r\x2\x2\x94F\x952\x5\xE6t\x2\x950\x952\x5\xE8u\x2\x951"+
17152+
"\x94F\x3\x2\x2\x2\x951\x950\x3\x2\x2\x2\x952\xED\x3\x2\x2\x2\x953\x954"+
17153+
"\x5\xF4{\x2\x954\xEF\x3\x2\x2\x2\x955\x957\x5\xF2z\x2\x956\x955\x3\x2"+
17154+
"\x2\x2\x956\x957\x3\x2\x2\x2\x957\x959\x3\x2\x2\x2\x958\x95A\a\xD8\x2"+
17155+
"\x2\x959\x958\x3\x2\x2\x2\x959\x95A\x3\x2\x2\x2\x95A\x95B\x3\x2\x2\x2"+
17156+
"\x95B\x95D\t\v\x2\x2\x95C\x95E\a\xD8\x2\x2\x95D\x95C\x3\x2\x2\x2\x95D"+
1715117157
"\x95E\x3\x2\x2\x2\x95E\x960\x3\x2\x2\x2\x95F\x956\x3\x2\x2\x2\x960\x963"+
1715217158
"\x3\x2\x2\x2\x961\x95F\x3\x2\x2\x2\x961\x962\x3\x2\x2\x2\x962\x964\x3"+
1715317159
"\x2\x2\x2\x963\x961\x3\x2\x2\x2\x964\x971\x5\xF2z\x2\x965\x967\a\xD8\x2"+
@@ -17156,7 +17162,7 @@ private bool valueStmt_sempred(ValueStmtContext _localctx, int predIndex) {
1715617162
"\x96B\x3\x2\x2\x2\x96B\x96D\x3\x2\x2\x2\x96C\x96E\x5\xF2z\x2\x96D\x96C"+
1715717163
"\x3\x2\x2\x2\x96D\x96E\x3\x2\x2\x2\x96E\x970\x3\x2\x2\x2\x96F\x966\x3"+
1715817164
"\x2\x2\x2\x970\x973\x3\x2\x2\x2\x971\x96F\x3\x2\x2\x2\x971\x972\x3\x2"+
17159-
"\x2\x2\x972\xF1\x3\x2\x2\x2\x973\x971\x3\x2\x2\x2\x974\x975\t\r\x2\x2"+
17165+
"\x2\x2\x972\xF1\x3\x2\x2\x2\x973\x971\x3\x2\x2\x2\x974\x975\t\xE\x2\x2"+
1716017166
"\x975\x977\a\xD8\x2\x2\x976\x974\x3\x2\x2\x2\x976\x977\x3\x2\x2\x2\x977"+
1716117167
"\x978\x3\x2\x2\x2\x978\x979\x5\xC6\x64\x2\x979\xF3\x3\x2\x2\x2\x97A\x97B"+
1716217168
"\a\n\x2\x2\x97B\x97D\x5\x100\x81\x2\x97C\x97E\x5\x116\x8C\x2\x97D\x97C"+
@@ -17172,7 +17178,7 @@ private bool valueStmt_sempred(ValueStmtContext _localctx, int predIndex) {
1717217178
"\x2\x2\x2\x994\x995\x3\x2\x2\x2\x995\x996\x3\x2\x2\x2\x996\x997\a\xCB"+
1717317179
"\x2\x2\x997\xF7\x3\x2\x2\x2\x998\x999\a{\x2\x2\x999\x99B\a\xD8\x2\x2\x99A"+
1717417180
"\x998\x3\x2\x2\x2\x99A\x99B\x3\x2\x2\x2\x99B\x99E\x3\x2\x2\x2\x99C\x99D"+
17175-
"\t\xE\x2\x2\x99D\x99F\a\xD8\x2\x2\x99E\x99C\x3\x2\x2\x2\x99E\x99F\x3\x2"+
17181+
"\t\xF\x2\x2\x99D\x99F\a\xD8\x2\x2\x99E\x99C\x3\x2\x2\x2\x99E\x99F\x3\x2"+
1717617182
"\x2\x2\x99F\x9A2\x3\x2\x2\x2\x9A0\x9A1\a\x82\x2\x2\x9A1\x9A3\a\xD8\x2"+
1717717183
"\x2\x9A2\x9A0\x3\x2\x2\x2\x9A2\x9A3\x3\x2\x2\x2\x9A3\x9A4\x3\x2\x2\x2"+
1717817184
"\x9A4\x9AD\x5\x100\x81\x2\x9A5\x9A7\a\xD8\x2\x2\x9A6\x9A5\x3\x2\x2\x2"+
@@ -17206,30 +17212,30 @@ private bool valueStmt_sempred(ValueStmtContext _localctx, int predIndex) {
1720617212
"\xD8\x2\x2\x9EC\x9EA\x3\x2\x2\x2\x9EC\x9ED\x3\x2\x2\x2\x9ED\x9EE\x3\x2"+
1720717213
"\x2\x2\x9EE\x9F1\x5\x114\x8B\x2\x9EF\x9F0\a\xD8\x2\x2\x9F0\x9F2\x5\x10C"+
1720817214
"\x87\x2\x9F1\x9EF\x3\x2\x2\x2\x9F1\x9F2\x3\x2\x2\x2\x9F2\x103\x3\x2\x2"+
17209-
"\x2\x9F3\x9F4\t\xF\x2\x2\x9F4\x105\x3\x2\x2\x2\x9F5\x9FA\a\xD4\x2\x2\x9F6"+
17210-
"\x9F9\x5\x11A\x8E\x2\x9F7\x9F9\a\xD4\x2\x2\x9F8\x9F6\x3\x2\x2\x2\x9F8"+
17211-
"\x9F7\x3\x2\x2\x2\x9F9\x9FC\x3\x2\x2\x2\x9FA\x9F8\x3\x2\x2\x2\x9FA\x9FB"+
17212-
"\x3\x2\x2\x2\x9FB\xA05\x3\x2\x2\x2\x9FC\x9FA\x3\x2\x2\x2\x9FD\xA00\x5"+
17213-
"\x11A\x8E\x2\x9FE\xA01\x5\x11A\x8E\x2\x9FF\xA01\a\xD4\x2\x2\xA00\x9FE"+
17215+
"\x2\x9F3\x9F4\t\x10\x2\x2\x9F4\x105\x3\x2\x2\x2\x9F5\x9FA\a\xD4\x2\x2"+
17216+
"\x9F6\x9F9\x5\x11A\x8E\x2\x9F7\x9F9\a\xD4\x2\x2\x9F8\x9F6\x3\x2\x2\x2"+
17217+
"\x9F8\x9F7\x3\x2\x2\x2\x9F9\x9FC\x3\x2\x2\x2\x9FA\x9F8\x3\x2\x2\x2\x9FA"+
17218+
"\x9FB\x3\x2\x2\x2\x9FB\xA05\x3\x2\x2\x2\x9FC\x9FA\x3\x2\x2\x2\x9FD\xA00"+
17219+
"\x5\x11A\x8E\x2\x9FE\xA01\x5\x11A\x8E\x2\x9FF\xA01\a\xD4\x2\x2\xA00\x9FE"+
1721417220
"\x3\x2\x2\x2\xA00\x9FF\x3\x2\x2\x2\xA01\xA02\x3\x2\x2\x2\xA02\xA00\x3"+
1721517221
"\x2\x2\x2\xA02\xA03\x3\x2\x2\x2\xA03\xA05\x3\x2\x2\x2\xA04\x9F5\x3\x2"+
17216-
"\x2\x2\xA04\x9FD\x3\x2\x2\x2\xA05\x107\x3\x2\x2\x2\xA06\xA07\t\x10\x2"+
17217-
"\x2\xA07\x109\x3\x2\x2\x2\xA08\xA0D\x5\x100\x81\x2\xA09\xA0A\t\x11\x2"+
17218-
"\x2\xA0A\xA0C\x5\x100\x81\x2\xA0B\xA09\x3\x2\x2\x2\xA0C\xA0F\x3\x2\x2"+
17219-
"\x2\xA0D\xA0B\x3\x2\x2\x2\xA0D\xA0E\x3\x2\x2\x2\xA0E\x10B\x3\x2\x2\x2"+
17220-
"\xA0F\xA0D\x3\x2\x2\x2\xA10\xA12\a\xC6\x2\x2\xA11\xA13\a\xD8\x2\x2\xA12"+
17221-
"\xA11\x3\x2\x2\x2\xA12\xA13\x3\x2\x2\x2\xA13\xA16\x3\x2\x2\x2\xA14\xA17"+
17222-
"\a\xD1\x2\x2\xA15\xA17\x5\x100\x81\x2\xA16\xA14\x3\x2\x2\x2\xA16\xA15"+
17223-
"\x3\x2\x2\x2\xA17\x10D\x3\x2\x2\x2\xA18\xA21\x5\x106\x84\x2\xA19\xA1B"+
17224-
"\a\xD8\x2\x2\xA1A\xA19\x3\x2\x2\x2\xA1A\xA1B\x3\x2\x2\x2\xA1B\xA1C\x3"+
17225-
"\x2\x2\x2\xA1C\xA1E\a\xC4\x2\x2\xA1D\xA1F\a\xD8\x2\x2\xA1E\xA1D\x3\x2"+
17226-
"\x2\x2\xA1E\xA1F\x3\x2\x2\x2\xA1F\xA20\x3\x2\x2\x2\xA20\xA22\x5\x106\x84"+
17227-
"\x2\xA21\xA1A\x3\x2\x2\x2\xA21\xA22\x3\x2\x2\x2\xA22\x10F\x3\x2\x2\x2"+
17228-
"\xA23\xA24\x5\x100\x81\x2\xA24\xA25\a\x6\x2\x2\xA25\x111\x3\x2\x2\x2\xA26"+
17229-
"\xA27\t\x12\x2\x2\xA27\x113\x3\x2\x2\x2\xA28\xA2B\x5\x104\x83\x2\xA29"+
17230-
"\xA2B\x5\x10A\x86\x2\xA2A\xA28\x3\x2\x2\x2\xA2A\xA29\x3\x2\x2\x2\xA2B"+
17231-
"\xA34\x3\x2\x2\x2\xA2C\xA2E\a\xD8\x2\x2\xA2D\xA2C\x3\x2\x2\x2\xA2D\xA2E"+
17232-
"\x3\x2\x2\x2\xA2E\xA2F\x3\x2\x2\x2\xA2F\xA31\a\xC2\x2\x2\xA30\xA32\a\xD8"+
17222+
"\x2\x2\xA04\x9FD\x3\x2\x2\x2\xA05\x107\x3\x2\x2\x2\xA06\xA07\t\x11\x2"+
17223+
"\x2\xA07\x109\x3\x2\x2\x2\xA08\xA0D\x5\x100\x81\x2\xA09\xA0A\t\r\x2\x2"+
17224+
"\xA0A\xA0C\x5\x100\x81\x2\xA0B\xA09\x3\x2\x2\x2\xA0C\xA0F\x3\x2\x2\x2"+
17225+
"\xA0D\xA0B\x3\x2\x2\x2\xA0D\xA0E\x3\x2\x2\x2\xA0E\x10B\x3\x2\x2\x2\xA0F"+
17226+
"\xA0D\x3\x2\x2\x2\xA10\xA12\a\xC6\x2\x2\xA11\xA13\a\xD8\x2\x2\xA12\xA11"+
17227+
"\x3\x2\x2\x2\xA12\xA13\x3\x2\x2\x2\xA13\xA16\x3\x2\x2\x2\xA14\xA17\a\xD1"+
17228+
"\x2\x2\xA15\xA17\x5\x100\x81\x2\xA16\xA14\x3\x2\x2\x2\xA16\xA15\x3\x2"+
17229+
"\x2\x2\xA17\x10D\x3\x2\x2\x2\xA18\xA21\x5\x106\x84\x2\xA19\xA1B\a\xD8"+
17230+
"\x2\x2\xA1A\xA19\x3\x2\x2\x2\xA1A\xA1B\x3\x2\x2\x2\xA1B\xA1C\x3\x2\x2"+
17231+
"\x2\xA1C\xA1E\a\xC4\x2\x2\xA1D\xA1F\a\xD8\x2\x2\xA1E\xA1D\x3\x2\x2\x2"+
17232+
"\xA1E\xA1F\x3\x2\x2\x2\xA1F\xA20\x3\x2\x2\x2\xA20\xA22\x5\x106\x84\x2"+
17233+
"\xA21\xA1A\x3\x2\x2\x2\xA21\xA22\x3\x2\x2\x2\xA22\x10F\x3\x2\x2\x2\xA23"+
17234+
"\xA24\x5\x100\x81\x2\xA24\xA25\a\x6\x2\x2\xA25\x111\x3\x2\x2\x2\xA26\xA27"+
17235+
"\t\x12\x2\x2\xA27\x113\x3\x2\x2\x2\xA28\xA2B\x5\x104\x83\x2\xA29\xA2B"+
17236+
"\x5\x10A\x86\x2\xA2A\xA28\x3\x2\x2\x2\xA2A\xA29\x3\x2\x2\x2\xA2B\xA34"+
17237+
"\x3\x2\x2\x2\xA2C\xA2E\a\xD8\x2\x2\xA2D\xA2C\x3\x2\x2\x2\xA2D\xA2E\x3"+
17238+
"\x2\x2\x2\xA2E\xA2F\x3\x2\x2\x2\xA2F\xA31\a\xC2\x2\x2\xA30\xA32\a\xD8"+
1723317239
"\x2\x2\xA31\xA30\x3\x2\x2\x2\xA31\xA32\x3\x2\x2\x2\xA32\xA33\x3\x2\x2"+
1723417240
"\x2\xA33\xA35\a\xCB\x2\x2\xA34\xA2D\x3\x2\x2\x2\xA34\xA35\x3\x2\x2\x2"+
1723517241
"\xA35\x115\x3\x2\x2\x2\xA36\xA37\t\x13\x2\x2\xA37\x117\x3\x2\x2\x2\xA38"+

0 commit comments

Comments
 (0)