Browse Source

--- Merging r32845 into '.':
A tests/webtbs/tw29321.pp
U compiler/pexpr.pas
--- Recording mergeinfo for merge of r32845 into '.':
U .

# revisions: 32845

git-svn-id: branches/fixes_3_0@33862 -

marco 9 years ago
parent
commit
c67f8f2a28
3 changed files with 32 additions and 6 deletions
  1. 1 0
      .gitattributes
  2. 7 6
      compiler/pexpr.pas
  3. 24 0
      tests/webtbs/tw29321.pp

+ 1 - 0
.gitattributes

@@ -14575,6 +14575,7 @@ tests/webtbs/tw2920.pp svneol=native#text/plain
 tests/webtbs/tw2923.pp svneol=native#text/plain
 tests/webtbs/tw2926.pp svneol=native#text/plain
 tests/webtbs/tw2927.pp svneol=native#text/plain
+tests/webtbs/tw29321.pp svneol=native#text/pascal
 tests/webtbs/tw29372.pp svneol=native#text/pascal
 tests/webtbs/tw2942a.pp svneol=native#text/plain
 tests/webtbs/tw2942b.pp svneol=native#text/plain

+ 7 - 6
compiler/pexpr.pas

@@ -2172,12 +2172,13 @@ implementation
                            end;
                        end
                      else
-                       begin
-                         Message(parser_e_invalid_qualifier);
-                         p1.destroy;
-                         p1:=cerrornode.create;
-                         consume(_ID);
-                       end;
+                       if (token<>_ID) or not try_type_helper(p1,nil) then
+                         begin
+                           Message(parser_e_invalid_qualifier);
+                           p1.destroy;
+                           p1:=cerrornode.create;
+                           consume(_ID);
+                         end;
                    end;
                   variantdef:
                     begin

+ 24 - 0
tests/webtbs/tw29321.pp

@@ -0,0 +1,24 @@
+{ %NORUN }
+
+program tw29321;
+
+{$mode objfpc}
+{$modeswitch typehelpers}
+
+type
+  TVector = array[0..2] of Single;
+  
+  TVectorHelper = type helper for TVector
+  public
+    procedure Add;
+  end;
+
+procedure TVectorHelper.Add;
+begin
+end;
+
+var
+  v: TVector;
+begin
+  v.Add;
+end.