Forráskód Böngészése

* array of const for classes fixed, was broken by r10
* test adapted

git-svn-id: trunk@154 -

florian 20 éve
szülő
commit
a39fd9d2ea
3 módosított fájl, 7 hozzáadás és 5 törlés
  1. 1 2
      compiler/ncgld.pas
  2. 5 2
      compiler/nld.pas
  3. 1 1
      tests/webtbs/tw3973.pp

+ 1 - 2
compiler/ncgld.pas

@@ -817,9 +817,8 @@ implementation
                    objectdef :
                      if is_interface(lt) then
                        vtype:=vtInterface
+                     { vtObject really means a class based on TObject }
                      else if is_class(lt) then
-                       vtype:=vtClass
-                     else if is_object(lt) then
                        vtype:=vtObject
                      else
                        internalerror(200505171);

+ 5 - 2
compiler/nld.pas

@@ -989,8 +989,11 @@ implementation
                    stringdef,
                    variantdef,
                    pointerdef,
-                   classrefdef,
-                   objectdef : ;
+                   classrefdef:
+                     ;
+                   objectdef :
+                     if is_object(hp.left.resulttype.def) then
+                       CGMessagePos1(hp.left.fileinfo,type_e_wrong_type_in_array_constructor,hp.left.resulttype.def.typename);
                    else
                      CGMessagePos1(hp.left.fileinfo,type_e_wrong_type_in_array_constructor,hp.left.resulttype.def.typename);
                  end;

+ 1 - 1
tests/webtbs/tw3973.pp

@@ -40,7 +40,7 @@ var
       Check('Interface(nil)', a[1], vtInterface);
       Check('Interface', a[2], vtInterface);
       { TObject is a class as well! }
-      Check('Class Object(nil)', a[3], vtClass);
+      Check('Class Object(nil)', a[3], vtObject);
       Check('Class', a[4], vtClass);
       {$IFDEF FPC}
       Check('QWord', a[5], vtQWord);