meisl
ef0c4797bb
Merge remote-tracking branch 'remotes/origin/v7.1' into testability_steps_1_2_3_again
2021-08-02 10:26:48 +02:00
meisl
ac02a99934
* move ModuleImporter to prog8.compiler (package & module), together with its tests
2021-08-02 10:07:19 +02:00
meisl
fb67d1155f
* structure TestCompilerOnImportsAndIncludes, add (@Disabled for now) test re %import with string arg
2021-08-02 08:57:09 +02:00
meisl
eb46852bb9
* restrict access to Program.modules, add tests
2021-08-02 08:15:20 +02:00
meisl
007d8d2811
* ModuleImporter tests: refactor, more precise assertions about the program's modules
2021-08-01 17:27:41 +02:00
meisl
ebe04fc114
* @Disable ModuleImporter test re importing a faulty module twice - no easy fix for this atm
2021-08-01 16:26:27 +02:00
meisl
d7dd7f70c0
* rename file ModuleParsing.kt to ModuleImporter.kt (nothing else, still in compilerAst)
2021-08-01 15:38:21 +02:00
meisl
f2cb89a128
- ModuleImporter: deduplicate code
2021-08-01 15:37:57 +02:00
meisl
b8fade23de
* (first quick) fix: ModuleImporter should look in given "libdirs" (or better "srcdirs"?) for module file
2021-08-01 15:17:47 +02:00
meisl
3b97a17648
* *little bit* of cleanup in ModuleImporter - *only refactoring*
2021-08-01 11:18:45 +02:00
meisl
0d06e3ff22
*/+ refactor tests of ModuleImporter, add some tests related to libdirs issue
2021-08-01 10:48:28 +02:00
meisl
c914f7bbcf
+ TestCompilerOptionLibdirs.kt: libdirs option doesn't seem to work
2021-08-01 10:16:37 +02:00
meisl
1b451180c1
* test helpers assumeXyz (helpers/paths.kt) return the resulting path (unless they fail, of course); test directories are checked automatically at init, so no sanityCheckDirectories is needed anymore
2021-07-31 14:44:02 +02:00
meisl
ed061b362b
* #53 step6: move IStringEncoding to prog8.compiler (package as well as module)
2021-07-30 19:25:18 +02:00
meisl
e1026584c8
* split up test helpers into separate files, move mapCombinations(..) down to compilerAst/test/helpers since they're generic and don't depend on compiler
2021-07-30 18:37:12 +02:00
meisl
4c615e4fac
* solve problem re shared test helpers: a) don't use the same file name (results in same JVM class name) & b) tell gradle about it (put them in extra dir(s) test/helpers/ and add this to test source set)
2021-07-30 17:19:44 +02:00
meisl
7c9d48833b
Merge branch 'irmen:v7.1' into v7.1
2021-07-22 12:14:34 +02:00
Irmen de Jong
b60b195aec
update junit and hamcrest unittest lib versions
2021-07-20 22:42:27 +02:00
meisl
db76c8d7f4
-/* remove IStringEncoding as param in compilerAst, and all other uses that were only because of that.
...
For good measure we also turn on *all* compiler tests with examples (they do take some time).
Note that the total *mentions* of IStringEncoding in the entire project went down from ~50 to 6, only 3 of which are *actual uses* (the others are 2 imports and 1 supertype ref in ICompilationTarget : IStringEncoding)!
2021-07-17 22:08:17 +02:00
meisl
de92740e87
* simple refactoring: move IStringEncoding, IMemSizer and IBuiltinFunctions to files of their own, also ext method Number.toHex to file compilerAst/src/prog8/ast/Extensions.kt. Moved the other interfaces that are indeed closely related to Node to the top of AstToplevel.kt. *This is really ONLY moving text around*, so it's easier to find things. Nothing else.
2021-07-17 21:29:01 +02:00
meisl
522bf91c30
* refactor RangeExpr, step 2: make toConstantIntegerRange and size *extension methods* and move them to compiler/astprocessing/AstExtensions.kt (along with the simple helper makeRange). They are in fact *only* used from the compiler module - strong indication that they actually belong there.
2021-07-17 21:13:34 +02:00
meisl
48d3abc1fe
* refactor RangeExpr, step 1: remove IStringEncoding as ctor arg and instead put it as arg to the two methods that actually depend on it: toConstantIntegerRange and size (as *it* calls the former)
2021-07-17 20:45:17 +02:00
meisl
3f6f25e06f
* @Disable tests re unsolved #55 , "float[] initializer with range and no explicit array size"
2021-07-17 17:12:16 +02:00
meisl
34ba07ee3b
+ expose #55 : float[] initializer as range where no array size is stated
2021-07-17 16:30:16 +02:00
meisl
ac37319d20
Merge branch 'bug_asmbinary' into testability_steps_1_2_3_again
2021-07-17 15:08:32 +02:00
meisl
b2c6274f74
* fix #54 / step 3: avoid some (= not all) complaints re the .binary filename 64tass still had/has.
...
Actually, I don't quite understand why it still says "not the real name of the file". The 64tass docs say:
> -Wno-portable
> Don't warn about source portability problems.
> These cross platform development annoyances are checked for:
> * Case insensitive use of file names or use of short names.
> * Use of backslashes for path separation instead of forward slashes.
> * Use of reserved characters in file names.
> * Absolute paths
2021-07-17 13:03:05 +02:00
meisl
402884b5ce
* fix #54 / step 2: the path stated with assembler directive .binary must be *relative to the .asm file*, not the working directory
2021-07-17 13:02:48 +02:00
meisl
23c99002c0
* fix #54 / step 1: relativize threw IllegalArgumentException if called on non-absolute path with absolute path as argument ("different type of path")
2021-07-17 13:02:35 +02:00
meisl
ee115b3337
+ expose #54 , %asmbinary when outputDir != workingDir; also: refactor compiler tests on examples and add test helpers
2021-07-17 13:02:20 +02:00
meisl
82f5a141ed
* reintroduce the conversion of CharLiteral to UBYTE literals, but now *during AST preprocessing*, not in the parser
2021-07-11 22:03:32 +02:00
meisl
0567168ea9
+ add AST node CharLiteral, *without* turning them into ubyte s. This breaks tests, particularly 3 in TestCompilerOnCharLit. I'm comitting this separately since the failure modes might be of interest (compiler says "internal error").
2021-07-11 21:32:18 +02:00
meisl
c80a15846d
* some more housekeeping re tests: gradle doesn't like .* imports for annotations, added @Disabled comments, made warnings go away
2021-07-11 19:04:53 +02:00
meisl
5e194536a8
* refactor compiler tests, again prog8test.helpers (TODO: remove duplication)
2021-07-11 18:18:27 +02:00
meisl
43c5ab8ecc
* refactor compilerAst tests, intro prog8test.helpers, @Disable the 3 tests that will pass after subsequent steps of "the plan"
2021-07-11 17:32:29 +02:00
meisl
cd295228ef
+ TestCompilerOnImportsAndIncludes.kt: 2 tests, both passing (but see FIXME in asmIncludeFromSameFolder.p8)
2021-07-11 15:33:44 +02:00
meisl
6c42221620
* fix AstToSourceCode: missing semicolon in header and footer, missing "@" for strings with altEncoding
2021-07-11 14:28:09 +02:00
meisl
0d73a7cd07
+ add TestAstToSourceCode.kt (all 8 new tests failing due to missing semicolon)
2021-07-11 14:11:32 +02:00
meisl
39d5b7edb0
+ test examples for both platforms, cx16 and c64; test two more: tehtriz and textelite (the largest ones, 20KB / 36KB)
2021-07-10 21:41:51 +02:00
meisl
6fa50a699f
+ add two tests for parseModule with empty source text (from File and from String)
2021-07-10 21:03:40 +02:00
meisl
ddaef3e5d5
+ add tests for SourceCode.fromResources; refactor tests
2021-07-10 20:55:23 +02:00
meisl
c3e9d4a9f8
* make resources available in compilerAst/test s; *you may have to re-import the gradle project into IDEA*
...
Note: these resources are NOT going into the production .jar
2021-07-10 20:50:07 +02:00
meisl
7530fb67c8
+ add tests for inner nodes' positions; refactor tests
2021-07-10 10:10:41 +02:00
meisl
19bb56df47
* no more scattering magic "@embedded@" all over the place: add SourceCode.isFromResources, *change Module.source from type Path to type SourceCode*
2021-07-09 17:32:33 +02:00
meisl
b0073ac933
* used "@embedded@" convention instead of "<res:...>", put it into SourceCode
2021-07-09 16:28:04 +02:00
meisl
137a89da15
* fix (hack) .name, .source and .position of Modules from the parser (via temp. subclass ParsedModule)
...
The temporary subclass ParsedModule : Module is introduced to concentrate all the workaround stuff in one place *while still not changing any public signature* such as of the Module ctor.
The convention used to indicate stuff from resources is still "<res:...>" not "@embedded@"- *note that this is caught by 3 tests in compiler*
2021-07-09 15:52:03 +02:00
meisl
44da7a302f
+ temporarily hack together a module name inside Prog8Parser.parseModule, to make the current all-too-simple import resolution work
2021-07-09 14:01:07 +02:00
meisl
4096aae8d4
* SourceCode.toString() now states both, java class and .origin
2021-07-09 13:55:56 +02:00
meisl
d3e026d82a
+/* non-unique module names: provide more info, add TODO
2021-07-09 13:44:44 +02:00
meisl
fa5ecd6495
* refactor ModuleImporter: throw the proper NoSuchFileException if import isn't found, return SourceCode? from both, tryGetModuleFromResource and tryGetModuleFromFile
2021-07-09 13:44:24 +02:00
meisl
af209ad50e
+ intro SourceCode, tying together source code text with its *origin*; Prog8Parser now only accepts this
2021-07-09 13:24:05 +02:00