Giter VIP home page Giter VIP logo

Comments (10)

tcoulter avatar tcoulter commented on July 17, 2024 1

Not discouraged yet. :)

from solc-js.

axic avatar axic commented on July 17, 2024

You do get the missing import statements returned by solc. There's a callback when a missing import reference is found.

from solc-js.

tcoulter avatar tcoulter commented on July 17, 2024

@axic Can you elaborate? It doesn't seem like this is in any of the documentation.

from solc-js.

axic avatar axic commented on July 17, 2024

It is not documented yet as it is not fully working.

You can pass a callback method to compile(input, optimise, callback), where the callback takes the import path as a parameter and returns the source code as a string. Processing the returned string in the C++ part sometimes doesn't work well.

At least getting the missing imports work reliably and that is how browser-solidity does it: it builds a list of missing imports by re-running the compiler. It might take a few iterations so it is only a workaround in that way. See https://github.com/chriseth/browser-solidity/blob/gh-pages/assets/js/app.js#L626.

(Here was the original issue for it: chriseth/browser-solidity#84. Might have some useful details.)

from solc-js.

axic avatar axic commented on July 17, 2024

@tcoulter I do think having an alternate implementation of the Solidity syntax in PEG is very useful and shouldn't be abandoned. Is your implementation supporting all language constructs or only import statements?

I was toying with the idea while back to have a try at an alternative compiler for the Solidity syntax, this might be a good starting point. At this stage it isn't a sane project to do though, but might make sense down the line in a couple of years.

from solc-js.

tcoulter avatar tcoulter commented on July 17, 2024

@axic It aims to support all language constructs, and it supports many of them (i.e., it at least parses everything in https://github.com/ConsenSys/solidity-parser/blob/master/test/doc_examples.sol). There's still work to be done to make the AST less verbose and more useful when these constructs are parsed, however.

Regarding the alternate compiler: Awesome, glad I could help!

from solc-js.

axic avatar axic commented on July 17, 2024

@tcoulter I don't think I will be able to allocate any time to that idea in the forseeable future. Trying to encourage you not to drop your PEG parser in case someone comes along writing a new compiler 😃

from solc-js.

axic avatar axic commented on July 17, 2024

@tcoulter fixed the import callback, see #7

from solc-js.

axic avatar axic commented on July 17, 2024

This is now possible using compileStandard().

from solc-js.

tcoulter avatar tcoulter commented on July 17, 2024

Hey @axic, any chance you can post an example? This input doesn't seem to work:

pragma solidity ^0.14.15;

import "./Dependency.sol";

contract MyContract {

}
    var solcStandardInput = {
      language: "Solidity",
      sources: {
        "Contract.sol": {
          content: body // contract code
        }
      },
      settings: {
        outputSelection: {
          "*": {
            "*": [
              "ast",
            ]
          },
        }
      }
    };

    var output = solc.compileStandard(JSON.stringify(solcStandardInput));

The output is:

{ contracts: {},
  errors:
   [ { component: 'general',
       formattedMessage: 'Contract.sol:3:1: ParserError: Source "Dependency.sol" not found: File import callback not supported\nimport "./Dependency.sol";\n^------------------------^\n',
       message: 'Source "Dependency.sol" not found: File import callback not supported',
       severity: 'error',
       type: 'ParserError' } ],
  sources: {} }

from solc-js.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.