• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Jass3?

Status
Not open for further replies.
Level 13
Joined
Nov 7, 2014
Messages
571
After dumping the strings from the game's executable (x86_64/Warcraft III.exe, version 1.31) one can find references to "jass3". From these strings it seems that Jass3 is very similar to vJass, having: libarries, modules, structs, interfaces, scopes, textmacros, delegates and operator overloading. I don't know if there's a way to tell the game to interpret the mapscript as Jass3 and not Jass2/Lua.

These strings seem to be related to "jass3":
Code:
out of dynamic memory in jass3_create_buffer()
out of dynamic memory in jass3ensure_buffer_stack()
out of dynamic memory in jass3_scan_buffer()
out of dynamic memory in jass3_scan_bytes()
bad buffer in jass3_scan_bytes()
jass3set_lineno called with no buffer
jass3set_column called with no buffer

program
library
interface
module
scope
textmacro
runtextmacro
return_
if_
loop
exitwhen
set
keyword
delegate
implement
literal_value
variable_decl
addr_of
logical_not
logical_and
logical_or
logical_less
logical_less_eq
logical_greater
logical_greater_eq
logical_eq
logical_neq
expr_dot_operator
identifier
arith_neg
arith_add
arith_sub
arith_div
arith_mul
arith_mod
expr_callable
expr_indexable
input_file
<unk_op>
Redundant declaration tag
Syntax error
LIBRARY_
boolean
code
handle
integer
real
string
nothing
null
thistype
__base_struct__
onDestroy
allocate
deallocate
getType
typeid
onInit
type_name
node
type_name2
node2
operator ==
operator
operator <
operator []=
operator []
initializer

Function '%s' expects a return value
Function expects a return value
Void function cannot have a return value
exitwhen cannot be used outside a loop/endloop block
Attempted to write to a constant symbol '%s'
'%s' did not receive the right number of arguments or the correct argument types!
Operation not supported with the types '%s'
Internal error
: %s
'%s' received an invalid array dimension!
'%s' is not an array!
'%s' is not a callable expression!
Types mismatch expected '%s', given '%s'
Invalid array size specified for '%s', expected a positive constant non-zero integer value
Special interface method '%s' takes nothing and does not have a return type
Scope '%s' with an initialization routine cannot be nested and should be declared in the global scope
Cannot implement the non-module '%s'
Access protection error: '%s' is not accessible
Access protection error: '%s' cannot access '%s'
Incompatible type extension: type '%s' cannot extend '%s'
Type '%s' referred by '%s' was not found
Left-hand side expression
'%s' cannot be assigned to.
Assignment to the array '%s' is not allowed. Assign to its elements instead.
An array of the built-in type code is not allowed.
Undeclared identifier '%s'
'thistype' is not resolvable or applicable in this context
Found cyclic type extension in '%s'
Type name '%s' cannot be used because it conflicts with the built-in type name
Method or member '%s' is reserved and should not be used
 (@%s:%d:%d)
Identifier '%s' (%s) redefinition%s
Divide by zero
Unknown operator
Modifier applied to %s '%s' is not applicable
Invalid initializer function
Missing initializer function
report_error(): unknown error: %d
%d:%d, semantic error: %s


variant_t@jass3@@
ast_node_t@jass3@@
ast_expression_node_t@jass3@@
ast_literal_value_node_t@jass3@@
ast_categorized_visitor_t@jass3@@
bcFunctionImpl@_ast_node_t@jass3@@PEBV12@@@
bcFunctionObjectImpl@V<lambda_f8b481233b59003516c6d9456e5d6f21>@@_ast_node_t@jass3@@PEBV23@@@
ast_node_with_list_t@jass3@@
ast_program_node_t@jass3@@
ast_input_file_node_t@jass3@@
ast_raw_visitor_t@jass3@@
find@?1??ast_find_node_if@jass3@@YAPEBVast_node_t@2@PEBV32@V?$functioast_node_t@jass3@@0@Z@blz@@@Z@
ast_binary_expr_node_t@jass3@@
ast_statement_with_expr_node_t@jass3@@
ast_return_node_t@jass3@@
sem_symbol_t@jass3@@
sem_array_type_t@jass3@@
sem_variable_t@jass3@@
sem_function_t@jass3@@
sem_op_function_t@jass3@@
sem_scope_t@jass3@@
sem_library_t@jass3@@
sem_builtin_type_t@jass3@@
sem_type_extension_t@jass3@@
sem_struct_t@jass3@@
bcFunctionImpl@H_NPEAVsem_symbol_t@jass3@@PEAV12@@@
visit_all@?1??build_parenthood_map@semantics_t@jass3@@AEAA_NXZ@
bcFunctionImpl@W4err_e@jass3@@PEAVast_node_t@2@PEBDPEAPEBV32@@@
bcFunctionObjectImpl@V<lambda_39f89f59e6645064d7ff869c070862d3>@@H_sem_symbol_t@jass3@@PEAV23@@@
bcFunctionObjectImpl@V<lambda_6f1b4b289d38de5192ddeec7494265b6>@@_ast_node_t@jass3@@PEBV23@@@
bcFunctionObjectImpl@V<lambda_9720fb9dc307bd636f615cd372b2ee9a>@@_ast_node_t@jass3@@PEBV23@@@
bcFunctionObjectImpl@V<lambda_b9c671a4e87d018072ecb273eaf1fcf5>@@_ast_node_t@jass3@@PEBV23@@@
bcFunctionObjectImpl@V<lambda_e315285a34d9c2af5a863aad817e0753>@@_ast_node_t@jass3@@PEBV23@@@
bcFunctionObjectImpl@V<lambda_0909c2d72968773518212ed598eb81fa>@@_ast_node_t@jass3@@PEBV23@@@
bcFunctionObjectImpl@V<lambda_a0caa47d8e5f17f39f3acb1f1f539dab>@@W4err_e@jass3@@PEAVast_node_t@3@PEBDPEAPEBV43@@@
ast_unary_expr_node_t@jass3@@
ast_addr_of_node_t@jass3@@
ast_logical_not_node_t@jass3@@
ast_logical_and_node_t@jass3@@
ast_logical_or_node_t@jass3@@
ast_arith_neg_node_t@jass3@@
ast_arith_add_node_t@jass3@@
ast_arith_sub_node_t@jass3@@
ast_arith_mul_node_t@jass3@@
ast_arith_div_node_t@jass3@@
ast_arith_mod_node_t@jass3@@
ast_logical_less_node_t@jass3@@
ast_logical_less_eq_node_t@jass3@@
ast_logical_greater_node_t@jass3@@
ast_logical_greater_eq_node_t@jass3@@
ast_logical_equals_node_t@jass3@@
ast_dot_operator_node_t@jass3@@
ast_logical_not_equals_node_t@jass3@@
ast_identifier_node_t@jass3@@
ast_callable_expr_node_t@jass3@@
ast_indexable_expr_node_t@jass3@@
ast_globals_node_t@jass3@@
ast_library_node_t@jass3@@
ast_scope_node_t@jass3@@
ast_delegate_node_t@jass3@@
ast_implement_node_t@jass3@@
ast_usercode_node_t@jass3@@
ast_textmacro_node_t@jass3@@
ast_runtextmacro_node_t@jass3@@
ast_alias_node_t@jass3@@
ast_keyword_node_t@jass3@@
ast_hook_node_t@jass3@@
ast_type_node_t@jass3@@
ast_structure_node_t@jass3@@
ast_variable_decl_node_t@jass3@@
ast_function_node_t@jass3@@
ast_if_node_t@jass3@@
ast_block_end_node_t@jass3@@
ast_loop_node_t@jass3@@
ast_exitwhen_node_t@jass3@@
ast_call_node_t@jass3@@
ast_set_node_t@jass3@@
 
People have found references to jass3 before by looking through the executable, but this is probably the most detailed information about it out there. Seeing what it contains, JASS3 almost seems like a it'll be a vJASS parser. But it's quite possible that it's a new language and they just want it to be as similar to jass2/vjass as possible, to make porting old maps easier. Though I really wonder what the point of going through all this effort is, since Lua can now be used (and so can many other languages, via transpilers).
 

Bribe

Code Moderator
Level 50
Joined
Sep 26, 2009
Messages
9,464
People have found references to jass3 before by looking through the executable, but this is probably the most detailed information about it out there. Seeing what it contains, JASS3 almost seems like a it'll be a vJASS parser. But it's quite possible that it's a new language and they just want it to be as similar to jass2/vjass as possible, to make porting old maps easier. Though I really wonder what the point of going through all this effort is, since Lua can now be used (and so can many other languages, via transpilers).
Imagine if JASS and Lua could coexist in the same map, with JASS compiling into Lua when the map is saved or loaded.
 
I really can't imagine this engine will see future patches to bring to light unused features. There is not that kind of business plan with Reforged. They did not open up Microtransactions to sell some of the skins that the game *looks like* they intended to sell. As a user, you could not help financially support Reforged if you wanted to.

I do not think these constructs, if they existed unused in the game, will ever become used.
 
Status
Not open for further replies.
Top