Browse Source

+ test for mantis #11396 (already fixed in 2.2.2)

git-svn-id: trunk@12816 -
Jonas Maebe 16 years ago
parent
commit
042cbbc555
2 changed files with 99 additions and 0 deletions
  1. 1 0
      .gitattributes
  2. 98 0
      tests/webtbs/tw11369.pp

+ 1 - 0
.gitattributes

@@ -8684,6 +8684,7 @@ tests/webtbs/tw1132.pp svneol=native#text/plain
 tests/webtbs/tw1133.pp svneol=native#text/plain
 tests/webtbs/tw11349.pp svneol=native#text/plain
 tests/webtbs/tw11354.pp svneol=native#text/plain
+tests/webtbs/tw11369.pp svneol=native#text/plain
 tests/webtbs/tw11372.pp svneol=native#text/plain
 tests/webtbs/tw11392.pp svneol=native#text/plain
 tests/webtbs/tw11431.pp svneol=native#text/plain

+ 98 - 0
tests/webtbs/tw11369.pp

@@ -0,0 +1,98 @@
+
+// see also 4.2 variable declaration in ref manual
+//http://www.freepascal.org/docs-html/ref/refse19.html
+
+// The curterm6 case in the manual warrants a separate bug report
+
+{$if defined(darwin) or defined(os2) or defined(emx) or defined(palmos) or defined(symbian) or defined(watcom) or defined(wdosx) or defined(win32) or defined(wince)}
+{$define underscoreprefix}
+{$endif}
+
+var  
+  curterm1 : integer =1 ;  
+ 
+  curterm2 : integer =2 ; cvar;  
+ 
+ // these three are truly external -> no init is possible.
+
+  curterm3 : integer  ; cvar; external;  
+{$ifdef underscoreprefix}
+  curterm4 : integer  ; external name '_curterm4b';    
+{$ifdef unix}
+ {$ifdef darwin}
+  {Êon darwin, dll-vars always get the c-prefix, because otherwise
+    you run into trouble because e.g. global symbols cannot start
+    with 'L' (such symbols are always interpreted as local symbols
+  }
+  curterm5 : integer  ; external 'libc' name 'curterm5b';  
+ {$else darwin}
+  curterm5 : integer  ; external 'libc' name '_curterm5b';  
+ {$endif}
+ 
+{$endif}
+{$else underscoreprefix}
+  curterm4 : integer  ; external name 'curterm4b';    
+{$ifdef unix}
+  { on windows, this would actually search in libc.dll }
+  curterm5 : integer  ; external 'libc' name 'curterm5b';  
+{$endif}
+{$endif underscoreprefix}
+ 
+ 
+  curterm7 : integer =7 ; cvar;  export;  
+  curterm8 : integer =8 ; cvar;  public;  
+{$ifdef underscoreprefix}
+  curterm9 : integer =9 ; export name '_me';  
+  curterm10 : integer =10 ; public name '_ma';  
+{$else underscoreprefix}
+  curterm9 : integer =9 ; export name 'me';  
+  curterm10 : integer =10 ; public name 'ma';  
+{$endif underscoreprefix}
+ 
+  curterm11 : integer =11 ;
+
+// some declarations to make it compile in theory
+
+
+ { the cvar modifier makes sure the c-prefix gets added if necessary }
+ curterm3b : integer = 3; cvar ; export name 'curterm3';  
+ curterm4b :integer = 4; cvar; export;
+{$ifdef unix}
+ curterm5b :integer = 5; cvar; export;
+{$endif}
+
+// we need a references too, so we print them.
+
+begin
+  if (curterm1<>1) then
+    halt(1);
+
+  if (curterm2<>2) then
+    halt(2);
+
+  if (curterm3<>3) then
+    halt(3);
+
+  if (curterm4<>4) then
+    halt(4);
+
+{$ifdef unix}
+  if (curterm5<>5) then
+    halt(5);
+{$endif}
+
+  if (curterm7<>7) then
+    halt(7);
+
+  if (curterm8<>8) then
+    halt(8);
+
+  if (curterm9<>9) then
+    halt(9);
+
+  if (curterm10<>10) then
+    halt(10);
+
+  if (curterm11<>11) then
+    halt(11);
+end.