Skip to content

Commit

Permalink
fix: finalize build
Browse files Browse the repository at this point in the history
  • Loading branch information
dstallenberg committed Sep 15, 2023
1 parent b32ba57 commit 6e2efc4
Show file tree
Hide file tree
Showing 40 changed files with 1,780 additions and 1,370 deletions.
6 changes: 6 additions & 0 deletions libraries/analysis-solidity/lib/target/Target.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ export type ContractTarget = CoreSubTarget & {
export type FunctionTarget = CoreSubTarget & {
type: TargetType.FUNCTION;
id: string;
contractId: string;
name: string;

/**
Expand Down Expand Up @@ -95,3 +96,8 @@ export enum ContractKind {
Library = "library",
Interface = "interface",
}


export function isExternal(target: SubTarget) {
return target.type === TargetType.FUNCTION && target.visibility === Visibility.External
}
28 changes: 3 additions & 25 deletions libraries/analysis-solidity/lib/target/TargetVisitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import { AbstractSyntaxTreeVisitor } from "../ast/AbstractSyntaxTreeVisitor";
import { NodePath } from "../ast/NodePath";
import { Type, TypeEnum } from "../types/Type";
import { Parameter } from "../types/Parameter";
import { Visibility, getVisibility } from "../types/Visibility";
import { getVisibility } from "../types/Visibility";
import { getStateMutability } from "../types/StateMutability";

/**
Expand Down Expand Up @@ -117,30 +117,7 @@ export class TargetVisitor extends AbstractSyntaxTreeVisitor {
return functionParameter;
});

let visibility;
switch (path.node.visibility) {
case "default": {
visibility = Visibility.Public;
break;
}
case "public": {
visibility = Visibility.Public;
break;
}
case "external": {
visibility = Visibility.External;
break;
}
case "internal": {
visibility = Visibility.Internal;
break;
}
case "private": {
visibility = Visibility.Private;
break;
}
}

const visibility = getVisibility(path.node.visibility)
const mutability = getStateMutability(path.node.stateMutability);

const overrides = path.node.override
Expand All @@ -166,6 +143,7 @@ export class TargetVisitor extends AbstractSyntaxTreeVisitor {
const contractFunction: FunctionTarget = {
type: TargetType.FUNCTION,
id: id,
contractId: this._current.id,
name: name,
isConstructor: path.node.isConstructor,
isFallback: !path.node.name,
Expand Down
39 changes: 39 additions & 0 deletions libraries/analysis-solidity/lib/types/Type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import { Parameter } from "./Parameter";
import { StateMutability } from "./StateMutability";
import { Visibility } from "./Visibility";


export enum TypeEnum {
ADDRESS = "address",
BOOL = "bool",
Expand Down Expand Up @@ -101,6 +102,7 @@ export type StringType = {

export type Contract = {
type: TypeEnum.CONTRACT;
id: string;
};

export type UserDefined = {
Expand Down Expand Up @@ -143,3 +145,40 @@ export type Type =
| FunctionType
| Mapping
| ArrayType;



export function typeToString(type: Type): string {
switch (type.type) {
case TypeEnum.ADDRESS:
case TypeEnum.STRING:
case TypeEnum.DYNAMIC_SIZE_BYTE_ARRAY:
case TypeEnum.CONTRACT:


case TypeEnum.BOOL: {
return type.type // TODO statementMutatbility
}
case TypeEnum.INT:
case TypeEnum.FIXED: {
return `${type.signed ? '' : 'u'}${type.type}${type.bits}`
}
case TypeEnum.FIXED_SIZE_BYTE_ARRAY: {
return `${type.type}${type.bytes}`
}
case TypeEnum.FUNCTION: {
return `${type.type} (${type.parameters.map((t) => typeToString(t.type)).join(', ')}) {${type.visibility}} [${type.stateMutability}] [returns (${type.parameters.map((t) => typeToString(t.type)).join(', ')})]`
}
case TypeEnum.MAPPING: {
return `${type.type} (${typeToString(type.keyType)} => ${typeToString(type.valueType)})`
}
case TypeEnum.USER_DEFINED: {
return `${type.type} (${type.name})`
}

case TypeEnum.ARRAY: {
return `${type.baseType}[]`
}

}
}
2 changes: 1 addition & 1 deletion libraries/analysis-solidity/lib/types/Visibility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ export function getVisibility(visibility: string): Visibility {
// No default
}
throw new Error("Invalid visibility");
}
}
8 changes: 2 additions & 6 deletions libraries/search-solidity/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@
* limitations under the License.
*/

export * from "./lib/criterion/RequireObjectiveFunction";

export * from "./lib/search/crossover/SolidityTreeCrossover";
export * from "./lib/search/crossover/TreeCrossover";
export * from "./lib/search/SolidityExecutionResult";
export * from "./lib/search/SoliditySubject";

Expand All @@ -32,8 +30,7 @@ export * from "./lib/testcase/sampling/SoliditySampler";

export * from "./lib/testcase/statements/action/ActionStatement";
export * from "./lib/testcase/statements/action/ConstructorCall";
export * from "./lib/testcase/statements/action/FunctionCall";
export * from "./lib/testcase/statements/action/ObjectFunctionCall";
export * from "./lib/testcase/statements/action/ContractFunctionCall";

export * from "./lib/testcase/statements/primitive/AddressStatement";
export * from "./lib/testcase/statements/primitive/BoolStatement";
Expand All @@ -42,7 +39,6 @@ export * from "./lib/testcase/statements/primitive/NumericStatement";
export * from "./lib/testcase/statements/primitive/PrimitiveStatement";
export * from "./lib/testcase/statements/primitive/StringStatement";

export * from "./lib/testcase/statements/RootStatement";
export * from "./lib/testcase/statements/Statement";

export * from "./lib/testcase/SolidityTestCase";
Expand Down
Loading

0 comments on commit 6e2efc4

Please sign in to comment.