library D { function length(string memory self) public returns (uint) { return bytes(self).length; } }
contract C {
    using D for string;
    string x;
    function f() public returns (uint) {
        x = "abc";
        return x.length();
    }
    function g() public returns (uint) {
        string memory s = "abc";
        return s.length();
    }
}
// ====
// compileToEwasm: false
// ----
// library: D
// f() -> 3
// g() -> 3
