diff --git a/.gitattributes b/.gitattributes index 2a8d288160..bd175320e6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14908,6 +14908,7 @@ tests/webtbs/tw2923.pp svneol=native#text/plain tests/webtbs/tw29250.pp svneol=native#text/pascal 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/tw2942a.pp svneol=native#text/plain tests/webtbs/tw2942b.pp svneol=native#text/plain tests/webtbs/tw2943.pp svneol=native#text/plain diff --git a/compiler/pexpr.pas b/compiler/pexpr.pas index 2d12e5d862..c0298d0174 100644 --- a/compiler/pexpr.pas +++ b/compiler/pexpr.pas @@ -2369,12 +2369,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 diff --git a/tests/webtbs/tw29321.pp b/tests/webtbs/tw29321.pp new file mode 100644 index 0000000000..2af9b76596 --- /dev/null +++ b/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.