1 package org.jf.smalidea.findUsages; 2 3 import com.intellij.usages.impl.rules.UsageType; 4 5 public class FieldUsageTypeTest extends UsageTypeTest { 6 public FieldUsageTypeTest() { 7 super(new SmaliUsageTypeProvider()); 8 } 9 10 public void testFieldUsageTypes() throws Exception { 11 doTest("blah.smali", "" + 12 ".class public Lblah;\n" + 13 ".super Ljava/lang/Object;\n" + 14 "\n" + 15 ".annotation runtime Lblah;\n" + 16 " element = Lblah;->bl<ref:1>ah:Lblah;\n" + 17 " element2 = .enum Lblah;->bl<ref:2>ah:Lblah;\n" + 18 ".end annotation\n" + 19 "\n" + 20 ".field public blah:Lblah;\n" + 21 "\n" + 22 ".method public blah(Lblah;)Lblah;\n" + 23 " .registers 2\n" + 24 "\n" + 25 " iget v0, v0, Lblah;->bl<ref:3>ah:Lblah;\n" + 26 " iget-object v0, v0, Lblah;->bl<ref:4>ah:Lblah;\n" + 27 " iget-byte v0, v0, Lblah;->bl<ref:5>ah:Lblah;\n" + 28 " iget-char v0, v0, Lblah;->bl<ref:6>ah:Lblah;\n" + 29 " iget-object v0, v0, Lblah;->bl<ref:7>ah:Lblah;\n" + 30 " iget-object-volatile v0, v0, Lblah;->bl<ref:8>ah:Lblah;\n" + 31 " iget-short v0, v0, Lblah;->bl<ref:9>ah:Lblah;\n" + 32 " iget-volatile v0, v0, Lblah;->bl<ref:10>ah:Lblah;\n" + 33 " iget-wide v0, v0, Lblah;->bl<ref:11>ah:Lblah;\n" + 34 " iget-wide-volatile v0, v0, Lblah;->bl<ref:12>ah:Lblah;\n" + 35 " sget v0, Lblah;->bl<ref:13>ah:Lblah;\n" + 36 " sget-boolean v0, Lblah;->bl<ref:14>ah:Lblah;\n" + 37 " sget-byte v0, Lblah;->bl<ref:15>ah:Lblah;\n" + 38 " sget-char v0, Lblah;->bl<ref:16>ah:Lblah;\n" + 39 " sget-object v0, Lblah;->bl<ref:17>ah:Lblah;\n" + 40 " sget-object-volatile v0, Lblah;->bl<ref:18>ah:Lblah;\n" + 41 " sget-short v0, Lblah;->bl<ref:19>ah:Lblah;\n" + 42 " sget-volatile v0, Lblah;->bl<ref:20>ah:Lblah;\n" + 43 " sget-wide v0, Lblah;->bl<ref:21>ah:Lblah;\n" + 44 " sget-wide-volatile v0, Lblah;->bl<ref:22>ah:Lblah;\n" + 45 " \n" + 46 " iput v0, v0, Lblah;->bl<ref:23>ah:Lblah;\n" + 47 " iput-object v0, v0, Lblah;->bl<ref:24>ah:Lblah;\n" + 48 " iput-byte v0, v0, Lblah;->bl<ref:25>ah:Lblah;\n" + 49 " iput-char v0, v0, Lblah;->bl<ref:26>ah:Lblah;\n" + 50 " iput-object v0, v0, Lblah;->bl<ref:27>ah:Lblah;\n" + 51 " iput-object-volatile v0, v0, Lblah;->bl<ref:28>ah:Lblah;\n" + 52 " iput-short v0, v0, Lblah;->bl<ref:29>ah:Lblah;\n" + 53 " iput-volatile v0, v0, Lblah;->bl<ref:30>ah:Lblah;\n" + 54 " iput-wide v0, v0, Lblah;->bl<ref:31>ah:Lblah;\n" + 55 " iput-wide-volatile v0, v0, Lblah;->bl<ref:32>ah:Lblah;\n" + 56 " sput v0, Lblah;->bl<ref:33>ah:Lblah;\n" + 57 " sput-boolean v0, Lblah;->bl<ref:34>ah:Lblah;\n" + 58 " sput-byte v0, Lblah;->bl<ref:35>ah:Lblah;\n" + 59 " sput-char v0, Lblah;->bl<ref:36>ah:Lblah;\n" + 60 " sput-object v0, Lblah;->bl<ref:37>ah:Lblah;\n" + 61 " sput-object-volatile v0, Lblah;->bl<ref:38>ah:Lblah;\n" + 62 " sput-short v0, Lblah;->bl<ref:39>ah:Lblah;\n" + 63 " sput-volatile v0, Lblah;->bl<ref:40>ah:Lblah;\n" + 64 " sput-wide v0, Lblah;->bl<ref:41>ah:Lblah;\n" + 65 " sput-wide-volatile v0, Lblah;->bl<ref:42>ah:Lblah;\n" + 66 "\n" + 67 " throw-verification-error generic-error, Lblah;->bl<ref:43>ah:Lblah;\n" + 68 "\n" + 69 " return-void\n" + 70 ".end method\n", 71 1, SmaliUsageTypeProvider.LITERAL, 72 2, SmaliUsageTypeProvider.LITERAL, 73 3, UsageType.READ, 74 4, UsageType.READ, 75 5, UsageType.READ, 76 6, UsageType.READ, 77 7, UsageType.READ, 78 8, UsageType.READ, 79 9, UsageType.READ, 80 10, UsageType.READ, 81 11, UsageType.READ, 82 12, UsageType.READ, 83 13, UsageType.READ, 84 14, UsageType.READ, 85 15, UsageType.READ, 86 16, UsageType.READ, 87 17, UsageType.READ, 88 18, UsageType.READ, 89 19, UsageType.READ, 90 20, UsageType.READ, 91 21, UsageType.READ, 92 22, UsageType.READ, 93 23, UsageType.WRITE, 94 24, UsageType.WRITE, 95 25, UsageType.WRITE, 96 26, UsageType.WRITE, 97 27, UsageType.WRITE, 98 28, UsageType.WRITE, 99 29, UsageType.WRITE, 100 30, UsageType.WRITE, 101 31, UsageType.WRITE, 102 32, UsageType.WRITE, 103 33, UsageType.WRITE, 104 34, UsageType.WRITE, 105 35, UsageType.WRITE, 106 36, UsageType.WRITE, 107 37, UsageType.WRITE, 108 38, UsageType.WRITE, 109 39, UsageType.WRITE, 110 40, UsageType.WRITE, 111 41, UsageType.WRITE, 112 42, UsageType.WRITE, 113 43, SmaliUsageTypeProvider.VERIFICATION_ERROR); 114 } 115 } 116