Skip to content

Commit

Permalink
Merge pull request #98 from JorikSchellekens/rational_literal_types
Browse files Browse the repository at this point in the history
 Implement parser for rational literal types
  • Loading branch information
cd1m0 authored Mar 10, 2022
2 parents e41968a + 19f3128 commit 0717056
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/types/ast/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export * from "./mapping_type";
export * from "./module_type";
export * from "./packed_array_type";
export * from "./pointer";
export * from "./rational_literal";
export * from "./string";
export * from "./string_literal";
export * from "./tuple_type";
Expand Down
29 changes: 29 additions & 0 deletions src/types/ast/rational_literal.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { Range } from "../../misc";
import { TypeNode } from "./type";

interface Rational {
numerator: bigint;
denominator: bigint;
}

export class RationalLiteralType extends TypeNode {
public readonly literal: Rational;

constructor(literal: Rational, src?: Range) {
super(src);

this.literal = literal;
}

pp(): string {
return `rational_const ${ppRational(this.literal)}`;
}

getFields(): any[] {
return [this.literal];
}
}

function ppRational(literal: Rational): string {
return `${literal.numerator.toString()} / ${literal.denominator.toString()}`;
}
2 changes: 1 addition & 1 deletion src/types/typeStrings/typeString_grammar.pegjs
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ IntLiteralType =

RationalLiteralType =
RATIONAL_CONST __ numerator: MaybeNegNumber __ "/" __ denominator: Number {
throw new Error(`NYI rational literal type: ${text()}`);
return new RationalLiteralType({numerator: numerator, denominator: denominator})
}

BoolType =
Expand Down
1 change: 1 addition & 0 deletions src/types/typeStrings/typeString_parser_header.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import {
MappingType,
ModuleType,
PointerType,
RationalLiteralType,
StringLiteralType,
StringType,
TupleType,
Expand Down
2 changes: 2 additions & 0 deletions test/samples/solidity/types/types.sol
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,7 @@ contract TestStorage {
uint[4] memory t;

t;

1.1;
}
}

0 comments on commit 0717056

Please sign in to comment.