Experimental standard library

Change import syntax and cover with tests
This commit is contained in:
Nikola Matic
2023-06-06 17:16:23 +02:00
parent f1d2eda795
commit 47969adf91
17 changed files with 157 additions and 22 deletions
+18
View File
@@ -0,0 +1,18 @@
# This will re-generate the headers if any file within src was modified.
set_directory_properties(PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/stdlib/src/)
set(STDLIB stub)
set(GENERATED_STDLIB_HEADERS)
foreach(src IN LISTS STDLIB)
set(STDLIB_FILE ${CMAKE_SOURCE_DIR}/libstdlib/src/${src}.sol)
file(READ ${STDLIB_FILE} STDLIB_FILE_CONTENT HEX)
string(REGEX MATCHALL ".." STDLIB_FILE_CONTENT "${STDLIB_FILE_CONTENT}")
list(REMOVE_ITEM STDLIB_FILE_CONTENT "0d")
string(REGEX REPLACE ";" ",\n\t0x" STDLIB_FILE_CONTENT "${STDLIB_FILE_CONTENT}")
set(STDLIB_FILE_CONTENT "0x${STDLIB_FILE_CONTENT}")
set(STDLIB_FILE_NAME ${src})
configure_file("${CMAKE_SOURCE_DIR}/libstdlib/stdlib.src.h.in" ${CMAKE_BINARY_DIR}/include/libstdlib/${src}.h NEWLINE_STYLE LF @ONLY)
list(APPEND GENERATED_STDLIB_HEADERS ${CMAKE_BINARY_DIR}/include/libstdlib/${src}.h)
endforeach()
configure_file("${CMAKE_SOURCE_DIR}/libstdlib/stdlib.h.in" ${CMAKE_BINARY_DIR}/include/libstdlib/stdlib.h NEWLINE_STYLE LF @ONLY)
+9
View File
@@ -0,0 +1,9 @@
// SPDX-License-Identifier: Apache-2.0
pragma solidity >=0.0;
pragma experimental solidity;
function identity(uint256 x) pure returns (uint256)
{
return x;
}
+15
View File
@@ -0,0 +1,15 @@
#pragma once
#include <map>
#include <string>
#include "libstdlib/stub.h"
namespace solidity::stdlib
{
static std::map<std::string, std::string> sources = {
{ "std.stub", stub }
};
} // namespace solidity::stdlib
+13
View File
@@ -0,0 +1,13 @@
// The generation of this file is defined in stdlib/CMakeLists.txt.
// This file was generated by using the content of stdlib/src/@STDLIB_FILE_NAME@.sol.
#pragma once
namespace solidity::stdlib
{
static char const @STDLIB_FILE_NAME@[] = {
@STDLIB_FILE_CONTENT@, 0
};
} // namespace solidity::stdlib