Commit Graph

153 Commits

Author SHA1 Message Date
Arkshine
e46785a434 Compiler: Improve/fix recursion detection.
Imported from Pawn 3.2.3664 and 3.3.3875.
2014-08-26 09:05:23 +02:00
Arkshine
a873066466 Compiler: Fix enum field size was not taken into account when implicitly passed to a function.
Imported from Pawn 3.3.3930.

Example:

---

enum tag
{
  member[32]
}

new var[tag];

foo(const string[], size = sizeof(string))
{
    // size returns 1 before fix, 32, after.
}

public plugin_init()
{
    foo(var[member]);
}

---
2014-08-26 09:05:22 +02:00
Arkshine
f60b00ee71 Compiler: Use hash table for global name lookups.
Imported from SM: https://bugs.alliedmods.net/show_bug.cgi?id=4496.
2014-08-26 09:05:20 +02:00
Arkshine
a876962405 Compiler: Use in-memory buffers for reading files, and handle newlines better.
Imported from https://github.com/alliedmodders/sourcemod/pull/63.
2014-08-26 09:05:18 +02:00
Arkshine
c2ca5d857d Compiler: Change __line to __LINE__. 2014-08-26 09:05:17 +02:00
Arkshine
27825963f6 Compiler: Fix indentation. 2014-08-26 09:05:15 +02:00
Arkshine
ca7b0ceadd Compiler: Revert "Add #warning directive."
Probably not that useful.
2014-08-26 09:05:13 +02:00
Arkshine
32b546df69 Compiler: Revert "Fix runtime error in variadic functions that return strings."
Better fix by dvander will be provided later.
2014-08-26 09:05:11 +02:00
Arkshine
cea2f598b2 Compiler: Fix a regression in handling multi-dimensional arrays (introduced in 744d67b)
Fix imported from Pawn 3.3.4058.
2014-08-26 09:05:10 +02:00
Arkshine
d44eb7bf8d Compiler: Update VERSION_INT.
Some people may want to check compiler version with __Pawn, and it would be a good idea to bump the version.
Since we have a special version, and to avoid to use digit which may be used by official version, I propose using letters, so: 0x30A.
This should be resonneable.
2014-08-26 09:05:08 +02:00
Arkshine
e1445316aa Compiler: Fix moar. 2014-08-26 09:05:07 +02:00
Arkshine
238e3707c8 Compiler: Fix linux compilation. 2014-08-26 09:05:05 +02:00
Arkshine
16e5f54507 Compiler: Improve the reported line number accuracy on warning 203/4 (symbol never used).
Imported from Pawn 3.1.3541+.
https://code.google.com/p/pawnscript/source/detail?r=25
2014-08-26 09:05:03 +02:00
Arkshine
65c29cafa0 Compiler: Fix #elseif handling not working as expected.
Improted from Pawn 3.1.3636.

-- Example

#define VAR 1

#if VAR == 1
  // code
#elseif VAR == 2
  // code
#endif

--
Returns error(38).
2014-08-26 09:05:01 +02:00
Arkshine
c4b233d094 Compiler: Improve sizeof return on array without specifiying the dimensions.
Imported from Pawn 3.1.3636.

"When making an array without specifiying the dimensions, but where the element
count at the lowest dimension is the same for all, the compiler now "counts"
this size, rather than setting the lowest dimension as "variable length".

An example for this situation is the declaration:
    new my_array[][] = { {1,0}, {2,1}, {3,1} }
No dimensions are given, but the new compiler determines that the minor
dimension is 2 (and the major dimension is 3). Previous compilers set the
minor dimension to 0 --meaning "variable"."
2014-08-26 09:05:00 +02:00
Arkshine
cd189320e5 Compiler: Fix the "@" character was not allowed in macro definitions (while the documentation stated that they were).
Imported from Pawn 3.1.3599.
2014-08-26 09:04:58 +02:00
Arkshine
17114347d1 Compiler: Fix runtime error in variadic functions that return strings.
Imported from SM-AM: 1d1244c2f0.

"This fixes a bug where returning a string from a variadic function caused
an invalid memory access error during runtime. It seems like they forgot
to update existing string return code for variadic functions."
2014-08-26 09:04:56 +02:00
Arkshine
1866afd80b Compiler: Add __line
Imported from SA-MP: 605ae7f4d3
This is a backport from Pawn 4.0. It sets to the current line number during compile time.
Documention for 3.x actually mention this.
2014-08-26 09:04:55 +02:00
Arkshine
fcdeea683b Compiler: Add #warning directive.
Basically same as error but as warning.
Imported from SA-MP: 1bd6be93e0

Example:

  #warning don't eat egg.

Result:

  warning.sma(1) : warning 234: user warning: don't eat egg.
2014-08-26 09:04:53 +02:00
Arkshine
92255bcdc3 Compiler: Fix crash when using tagof(tagname:)
Imported from SA-MP: 53ef10ffc7
2014-08-26 09:04:52 +02:00
Arkshine
b2442a2268 Compiler: Ignore #pragma tabsize with non-positive argument.
Imported from SA-MP: 7f30a03f94.
2014-08-26 09:04:50 +02:00
Arkshine
1b3b07d4d8 Compiler: Add __BINARY_PATH__ and __BINARY_FILE__.
Imported from SM: https://hg.alliedmods.net/sourcemod-central/rev/bd38ac67afe1 and https://hg.alliedmods.net/sourcemod-central/rev/eb4c45360aaf.
2014-08-26 09:04:48 +02:00
Arkshine
95f3b0d354 Compiler: Fix return omission with else-after-return.
Imported from SM: https://bugs.alliedmods.net/show_bug.cgi?id=4852.
2014-08-26 09:04:47 +02:00
Arkshine
9b5c6bfff0 Compiler: Fix asserting when returning a string literal.
Imported from SM: https://bugs.alliedmods.net/show_bug.cgi?id=3836.
2014-08-26 09:04:45 +02:00
Arkshine
57b172072a Compiler: Fix bogus assert about name lengths.
Imported from SM: https://bugs.alliedmods.net/show_bug.cgi?id=4486.
2014-08-26 09:04:44 +02:00
Arkshine
3b2618f63b Compiler: Fix improper handling of constant chained relational operators.
Imported from SM: https://bugs.alliedmods.net/show_bug.cgi?id=3838.
2014-08-26 09:04:42 +02:00
Arkshine
4f525b9150 Compiler: Fix memory corruption when parsing natives.
Imported from SM: https://bugs.alliedmods.net/show_bug.cgi?id=5840
2014-08-26 09:04:40 +02:00
Arkshine
325a746d90 Compiler: Fix issue with multidimensional array variable release.
Imported from SM: https://bugs.alliedmods.net/show_bug.cgi?id=6100.
2014-08-26 09:04:39 +02:00
Arkshine
6978e2dc4c Compiler: Fix in recursion detection.
Original fix imported from pawn 3.1.3522.
This fixes where for some plugins you would have:

   Stack/heap size:      16384 bytes; usage is unknown, due to recursion

Now, you get:

   Stack/heap size:      16384 bytes; estimated max. usage=782 cells (3128 bytes)
2014-08-26 09:04:37 +02:00
Arkshine
520493fab1 Compiler: Add #pragma deprecated.
This is based on SM, including patch to support macros/constants (https://hg.alliedmods.net/sourcemod-central/rev/ef8dd1cddc35).
Updated also some pawn includes to use this new pragma.
2014-08-26 09:04:36 +02:00
Arkshine
09303625fb Compiler: Generate .scp files as part of the build process.
Stolen from SM (https://github.com/alliedmodders/sourcemod/pull/112).
2014-08-26 09:02:38 +02:00
Arkshine
02b6d0a288 Compiler: Increase input line length.
1023 can be achieved really fastly, e.g. with some SQL definitions.
This is the same value as SM.
2014-08-26 09:02:36 +02:00
Vincent Herbet
ccf919c58c Fix typo in previous commit (r=dvander) 2014-08-21 20:57:08 +02:00
David Anderson
567fbcd517 Fix build. 2014-08-19 21:38:44 -07:00
David Anderson
6bbc4c8dbd Fix returning strings from variadic functions. 2014-08-17 10:00:51 -07:00
Asher Baker
3a43a41141 Added back estimated stack usage. 2014-08-15 23:46:16 +01:00
Asher Baker
f886e69dfb Fixed linux build. 2014-08-15 23:23:11 +01:00
Asher Baker
46123d359f Add support for Emscripten to the compiler. 2014-08-15 16:32:00 +00:00
Scott Ehlert
1cff91ced5 Update license headers for compiler. 2014-08-04 13:18:28 -05:00
xPaw
d7a74ebb94 🔥 Remove amxmod compat hack from the compiler 2014-07-19 18:12:15 +03:00
Arkshine
9815050287 Increase var/func and input line maximum length (bug 5924, r=dvander) 2014-03-24 01:04:17 +01:00
David Anderson
779e064a17 Add .rc files.
Former-commit-id: 3d9c34eff669112a54d181ca3f970e2c77d31409
2014-02-08 20:53:01 -08:00
David Anderson
bd586d37e6 Add OS X support to AMBuild and 10.9 support to amxxpc.
Former-commit-id: 91779cb9414e0ade9c170752cfc313c0425c8d14
2014-02-08 15:25:57 -08:00
David Anderson
ad36859607 Port plugin building to AMBuild.
Former-commit-id: 9ac73de5b247da341b0b4cdf00ec3c7e0472be82
2014-02-08 12:42:00 -08:00
David Anderson
c4e90ce865 Initial import of AMBuild infrastructure for C++ projects.
Former-commit-id: 53baa4f8c25525674f5e71f8f6ff2663928500ab
2014-02-08 01:14:15 -08:00
Vincent Herbet
da30315556 Fix Wno-delete-non-virtual-dtor flag to be passed only for .cpp files.
Former-commit-id: 4f8b31483ddf784589bc2bd53f736772147c631d
2013-08-10 19:29:28 +02:00
Scott Ehlert
40c1fee55a Added support for Mac OS X and building with clang (bug 5601, r=dvander). 2013-02-13 01:14:37 -06:00
Scott Ehlert
5a6c4ea408 Removed amxxpc64 and rebuilt amxxpc binaries. 2013-02-08 03:44:40 -06:00
David Anderson
6e4f09366e Ditch amxxpc64. AMXX files will now only contain 32-bit code. 2013-02-08 00:35:59 -08:00
Scott Ehlert
9d65198786 Upgraded MSVC project files for VS 2010 and modified build tool to use them. 2011-06-29 00:50:14 -05:00
David Anderson
b706108ed6 Squashed commit of the following:
commit 011d9b6b07d904ad1e81ef7c747269903e2d47c4
Author: David Anderson <dvander@alliedmods.net>
Date:   Mon Jan 11 00:17:08 2010 -0600

    Initial import from Subversion (amxmodx/trunk rev 3757).
2014-02-06 23:06:54 -08:00
David Anderson
f201592ddb Fixed regression. I'm not making new builds though. 2008-08-16 23:32:58 +00:00
Scott Ehlert
c07d8f3d93 Final VS 2005 + Linux tomfoolery 2008-08-16 20:13:12 +00:00
Scott Ehlert
0dc6a4a5dd Whoa, amb1941: All of AMX Mod X is now officially moved over to Visual Studio 2005 (MSVC 8)
Also did the following:
* Removed -fPIC from all Linux makefiles
* AMXX build tool now also moved over to VS 2005
* AMXX build tool binary renamed from "AMXXRelease" to "builder"
* MSVC project files now can use environment variables to point to the paths of the Metamod headers and HL SDK: $(METAMOD) and $(HLSDK) respectively
2008-08-16 09:48:39 +00:00
Steve Dudenhoeffer
1129f09660 Added the any tag fix for functions returning any: 2007-05-22 01:29:18 +00:00
Steve Dudenhoeffer
ea912f794c Stole the magical any: tag from sourcemod 2007-04-24 13:36:36 +00:00
Steve Dudenhoeffer
39d6cb7840 Fixed #error ignoring #if blocks 2007-02-16 18:49:21 +00:00
David Anderson
4f8917ec44 experimental hack fix for code generation bug 2006-09-12 07:42:15 +00:00
David Anderson
65eb0279b2 merged in compiler change for amxmod_compat 2006-09-10 06:33:55 +00:00
David Anderson
a7fcf76244 fixed up for gcc-4.1 2006-08-25 00:28:36 +00:00
David Anderson
87ac42cd98 fixed makefile for changes 2006-07-16 07:24:35 +00:00
Borja Ferrer
f64d2366e9 added 2 memfile files 2006-07-16 02:27:51 +00:00
Borja Ferrer
fb2e0c5f6c compiler is fast now 2006-07-16 02:25:32 +00:00
David Anderson
dd7529b42c Fixed a bug where three of the new pragmas parsed spaces wrong 2006-05-10 04:51:07 +00:00
David Anderson
58209dfb37 Added fix for __DATE__, added __TIME__
Added tag table crap for new autoloading feature
Version bump
2006-05-10 03:44:35 +00:00
David Anderson
f853f8f8cd added amxx to vers string 2006-02-28 05:14:36 +00:00
David Anderson
b2437451e3 implemented __DATE__ 2006-02-28 05:14:20 +00:00
David Anderson
636f1141e4 removed test code 2006-01-07 06:16:52 +00:00
David Anderson
3b79a063b6 finally, a correct fix 2006-01-07 05:39:40 +00:00
David Anderson
07b9bb9987 okay, works 2006-01-07 04:47:49 +00:00
David Anderson
39fd00c5be real fix this time 2006-01-07 04:43:01 +00:00
David Anderson
a4db0d927a Fixed bug at22981 2006-01-07 02:20:54 +00:00
David Anderson
9e4b1661e3 Fixed bug at21914 (faluco) 2005-11-20 19:10:13 +00:00
David Anderson
a5bd8463e8 Fixed bug at21691 (Podunk) 2005-11-19 21:38:50 +00:00
David Anderson
83ea8b82b9 Fixed issue at19616 2005-11-19 09:26:30 +00:00
David Anderson
4d9f2ded74 Fix for issue at19199 2005-11-19 09:16:27 +00:00
David Anderson
6163e25d7d *** empty log message *** 2005-11-19 09:07:28 +00:00
David Anderson
dcf39196d5 Ugly hack to get around ELF garbage 2005-09-18 01:14:44 +00:00
Borja Ferrer
24260137ec hope to have fixed the spacings finally 2005-09-14 01:40:48 +00:00
David Anderson
315e69797d more fixes 2005-09-14 00:42:56 +00:00
David Anderson
dddc693369 Fixed spacing 2005-09-14 00:38:48 +00:00
David Anderson
f02c73f94c Correct spacing! 2005-09-13 07:37:50 +00:00
David Anderson
92f79ffe88 left debug stuff in 2005-09-13 07:36:01 +00:00
David Anderson
db33e50f92 Fixed a bug where stocks using native names crashed 2005-09-13 07:32:07 +00:00
David Anderson
e566413224 Fixed MORE lines 2005-09-10 05:23:30 +00:00
David Anderson
368856f122 Fixed lines 2005-09-10 05:22:06 +00:00
David Anderson
52cc204787 Fixed numerous bugs in preprocessor (string literals being parsed, mismatched args being wiped) 2005-09-10 05:04:23 +00:00
David Anderson
67f012b74a Fixed bug where static declarations would crash 2005-09-06 21:34:33 +00:00
David Anderson
5705e69abb Fixed bug where level>1 arrays were walked incorrectly 2005-09-06 20:36:02 +00:00
David Anderson
824caab2c5 Fixed bug p1123143748 (Twilight Suzuka) 2005-09-06 03:00:01 +00:00
David Anderson
a105bc7402 Fixed bug at18003 (Geesu)
Fixed bug p1123149221 (Twilight Suzuka)
2005-09-06 01:55:41 +00:00
David Anderson
58fec512e5 Now requires GCC-3 to compile, fixes retarded linking problem 2005-08-18 07:01:47 +00:00
David Anderson
96c9fc8bc8 Changes for linux compatibility 2005-08-02 19:05:51 +00:00
David Anderson
ff48a9076b *** empty log message *** 2005-08-01 08:50:14 +00:00
David Anderson
4451691aa2 Removed warning 219 2005-08-01 05:56:06 +00:00
David Anderson
51d54a96ff Added pc_printf to exports 2005-07-30 00:35:47 +00:00
David Anderson
ee978890b8 What? 2005-07-29 23:47:11 +00:00
David Anderson
31436e3ecf Added linux compatibility 2005-07-27 17:28:06 +00:00
David Anderson
0de08a9452 Removed unused files 2005-07-27 17:00:57 +00:00
David Anderson
b94fbb519a *** empty log message *** 2005-07-25 05:31:12 +00:00