Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

13
LINES

< > BotCompany Repo | #1033873 // tok_castQuestionDot - actually misnamed. transpiles cast + ternary operator

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (6058L/33K).

// a cast B ? a.b : ...
// => a instanceof B ? ((B) a).b : ...
svoid tok_castQuestionDot(L<S> tok) {
  for (int i : jfind_all_reversed(tok, "<id> cast <id> ?")) {
    int iEndOfType = indexOf(tok, i, "?");
    int iColon = indexOf(tok, iEndOfType, ":");
    S var = tok.get(i), type = joinSubList(tok, i+4, iEndOfType-1);
    S rawType = tok_dropTypeParameters(type);
    
    tok_insertCasts_reTok(tok, iEndOfType, iColon, var, type);
    tok.set(i+2, "instanceof");
  }
}

Author comment

Began life as a copy of #1017552

download  show line numbers  debug dex  old transpilations   

Travelled to 3 computer(s): bhatertpkbcr, mowyntqkapby, mqqgnosmbjvj

No comments. add comment

Snippet ID: #1033873
Snippet name: tok_castQuestionDot - actually misnamed. transpiles cast + ternary operator
Eternal ID of this version: #1033873/2
Text MD5: b9b96236f6aaae119dc0d04269d4905a
Transpilation MD5: 84128198118721325204d5aab4d7843c
Author: stefan
Category: javax / transpiling
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2022-01-28 19:23:43
Source code size: 485 bytes / 13 lines
Pitched / IR pitched: No / No
Views / Downloads: 158 / 230
Version history: 1 change(s)
Referenced in: [show references]